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
from github.com/appium/api-docs/lib/api_docs.rb.
-
#trim_link(link_target) ⇒ Object
process docs/en/filename.md#testing links handle relative links [getting started](../../README.md).
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 39 40 41 |
# 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 no_slash = !link_target.include?('/') not_link_to_self = link_target != '#' if link_target && no_slash && not_link_to_self 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
60 61 62 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 60 def fail FAIL end |
#invalid_ext?(ext, link_target) ⇒ Boolean
from github.com/appium/api-docs/lib/api_docs.rb
44 45 46 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 44 def invalid_ext? ext, link_target ext.empty? && ! link_target.end_with?('/') end |
#trim_link(link_target) ⇒ Object
process docs/en/filename.md#testing links handle relative links [getting started](../../README.md)
50 51 52 53 54 55 56 |
# File 'lib/appium_doc_lint/lint/ext_missing.rb', line 50 def trim_link link_target link_target = link_target.strip if link_target return link_target if link_target.end_with?('/') # trim doc and relative trim = link_target.start_with?('docs/') || link_target.start_with?('../') trim ? File.basename(link_target) : link_target end |