class Appium::Lint::ExtMissing
all markdown links must have an extension
[link to read](readme.md)
invalid examples: [link](readme) [link](readme#testing)
Constants
- FAIL
Public Instance Methods
call()
click to toggle source
# 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()
click to toggle source
# File lib/appium_doc_lint/lint/ext_missing.rb, line 60 def fail FAIL end
invalid_ext?(ext, link_target)
click to toggle source
from github.com/appium/api-docs/lib/api_docs.rb
# 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)
click to toggle source
process docs/en/filename.md#testing links handle relative links [getting started](../../README.md)
# 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