class HatebloMixedContentsFinder::ElementValidator
Attributes
attr[R]
root[R]
tag[R]
Public Class Methods
new(tag, attr, root)
click to toggle source
# File lib/hateblo_mixed_contents_finder/element_validator.rb, line 5 def initialize(tag, attr, root) @tag = tag @attr = attr @root = root end
Public Instance Methods
validate(page)
click to toggle source
# File lib/hateblo_mixed_contents_finder/element_validator.rb, line 11 def validate(page) entry_title = find_entry_title(page) entry_id = find_entry_id(page) nodes = page.search("#{root} #{tag}") nodes.map { |node| link_url = node[attr].to_s if link_url.include?('http:') && target?(tag, node) InvalidContent.new(page.uri, entry_id, entry_title, tag, attr, link_url) end }.compact end
Private Instance Methods
find_entry_id(page)
click to toggle source
# File lib/hateblo_mixed_contents_finder/element_validator.rb, line 33 def find_entry_id(page) page.search('article.entry')[0]['data-uuid'] end
find_entry_title(page)
click to toggle source
# File lib/hateblo_mixed_contents_finder/element_validator.rb, line 29 def find_entry_title(page) page.search('.entry-title')[0].text.strip end
target?(tag, node)
click to toggle source
# File lib/hateblo_mixed_contents_finder/element_validator.rb, line 25 def target?(tag, node) tag != 'link' || (tag == 'link' && node['rel'] == 'stylesheet') end