Class: Appium::Lint::ExtMissing
- Defined in:
- lib/appium_doc_lint/lint/ext_missing.rb
Overview
all markdown links must have an extension
[link to read](readme.md)
invalid examples: [link](readme) [link](readme#testing)
Constant Summary collapse
- FAIL =
'Relative markdown links must have an extension'
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #call ⇒ Object
- #fail ⇒ Object
- #invalid_ext?(ext, link_target) ⇒ Boolean
- #trim_link(link_target) ⇒ Object
Methods inherited from Base
Constructor Details
This class inherits a constructor from Appium::Lint::Base
Instance Method Details
#call ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 12 def call input.lines.each_with_index do |line, index| # regex from github.com/appium/api-docs/lib/api_docs.rb # /(?<!!) -- negative look behind. excludes image links match_data = line.match(/(?<!!) \[ ( [^\[]* ) \] \( ( [^)]+ ) \)/x) next unless match_data # skip nil matches full = match_data[0] link_text = match_data[1] link_target = match_data[2] # process docs/en/filename.md#testing links link_target = trim_link link_target if link_target && !link_target.include?('/') ext = File.extname link_target if invalid_ext?(ext, link_target) warn index, full else ext, hash = ext.split '#' warn index, full if invalid_ext?(ext, link_target) end end end warnings end |
#fail ⇒ Object
51 52 53 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 51 def fail FAIL end |
#invalid_ext?(ext, link_target) ⇒ Boolean
40 41 42 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 40 def invalid_ext? ext, link_target ext.empty? && ! link_target.end_with?('/') end |
#trim_link(link_target) ⇒ Object
44 45 46 47 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 44 def trim_link link_target trim = link_target.start_with?('docs/') && ! link_target.end_with?('/') trim ? File.basename(link_target) : link_target end |