Class: ReadmeLinter
- Inherits:
-
Object
- Object
- ReadmeLinter
- Defined in:
- lib/learn-tool/readme-linter.rb
Class Method Summary collapse
- .collect_lines(file) ⇒ Object
- .error_free?(learn_error) ⇒ Boolean
- .green_light(learn_error) ⇒ Object
- .has_code_snippets?(file) ⇒ Boolean
- .lint_lines(lines, learn_error) ⇒ Object
- .parse_file(file, learn_error) ⇒ Object
- .total_errors?(learn_error) ⇒ Boolean
- .validate_snippets(lines, learn_error) ⇒ Object
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
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
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
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 |