Class: ReadmeLinter

Inherits:
Object
  • Object
show all
Defined in:
lib/learn-tool/readme-linter.rb

Class Method Summary collapse

Class Method Details

.collect_lines(file) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/learn-tool/readme-linter.rb', line 22

def self.collect_lines(file)
  lines = {}
  File.foreach(file) do |line_content|
    lines["#{$.}"] = line_content
  end
  lines
end

.error_free?(learn_error) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/learn-tool/readme-linter.rb', line 51

def self.error_free?(learn_error)
  learn_error.valid_readme[:message].empty?
end

.green_light(learn_error) ⇒ Object



12
13
14
15
# File 'lib/learn-tool/readme-linter.rb', line 12

def self.green_light(learn_error)
  learn_error.readme_error[:valid_readme] = true
  learn_error.valid_readme = {message: "valid readme", color: :green}
end

.has_code_snippets?(file) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
# File 'lib/learn-tool/readme-linter.rb', line 17

def self.has_code_snippets?(file)
  file_content = File.open(file).read
  file_content.match(/``/)
end

.lint_lines(lines, learn_error) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/learn-tool/readme-linter.rb', line 35

def self.lint_lines(lines, learn_error)
  lines.each do |line_num, line_content|
    if line_content.match(/``/)
      if !(line_content.match(/^```(ruby|rb|bash|sh|swift|html|erb|js|javascript|objc|java|sql|css|text|python)?$/)) 
        learn_error.valid_readme[:message] << "INVALID CODE SNIPPET - line #{line_num}: #{line_content}"
      end
    end
  end
end

.parse_file(file, learn_error) ⇒ Object



3
4
5
6
7
8
9
10
# File 'lib/learn-tool/readme-linter.rb', line 3

def self.parse_file(file, learn_error)
  if has_code_snippets?(file)
    lines = collect_lines(file)
    validate_snippets(lines, learn_error)
  else
     green_light(learn_error)
  end
end

.total_errors?(learn_error) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# File 'lib/learn-tool/readme-linter.rb', line 45

def self.total_errors?(learn_error)
  if error_free?(learn_error)
      green_light(learn_error)
  end
end

.validate_snippets(lines, learn_error) ⇒ Object



30
31
32
33
# File 'lib/learn-tool/readme-linter.rb', line 30

def self.validate_snippets(lines, learn_error)
  lint_lines(lines, learn_error)
  total_errors?(learn_error)
end