Class: HTMLProofer::Element

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/html_proofer/element.rb

Overview

Represents the element currently being processed

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

#blank?, #create_nokogiri, #pluralize

Constructor Details

#initialize(runner, node, base_url: nil) ⇒ Element

Returns a new instance of Element.



12
13
14
15
16
17
18
19
20
21
# File 'lib/html_proofer/element.rb', line 12

def initialize(runner, node, base_url: nil)
  @runner = runner
  @node = node

  @base_url = base_url
  @url = Attribute::Url.new(runner, link_attribute, base_url: base_url)

  @line = node.line
  @content = node.content
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



10
11
12
# File 'lib/html_proofer/element.rb', line 10

def base_url
  @base_url
end

#contentObject (readonly)

Returns the value of attribute content.



10
11
12
# File 'lib/html_proofer/element.rb', line 10

def content
  @content
end

#lineObject (readonly)

Returns the value of attribute line.



10
11
12
# File 'lib/html_proofer/element.rb', line 10

def line
  @line
end

#nodeObject (readonly)

Returns the value of attribute node.



10
11
12
# File 'lib/html_proofer/element.rb', line 10

def node
  @node
end

#urlObject (readonly)

Returns the value of attribute url.



10
11
12
# File 'lib/html_proofer/element.rb', line 10

def url
  @url
end

Instance Method Details

#a_tag?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/html_proofer/element.rb', line 71

def a_tag?
  @node.name == "a"
end

#aria_hidden?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/html_proofer/element.rb', line 79

def aria_hidden?
  @node.attributes["aria-hidden"]&.value == "true"
end

#hrefObject



64
65
66
67
68
69
# File 'lib/html_proofer/element.rb', line 64

def href
  return nil if !a_tag? && !link_tag?
  return swap_attributes("href") if attribute_swapped?

  @node["href"]
end

#ignore?Boolean

Returns:

  • (Boolean)


109
110
111
112
113
114
115
116
# File 'lib/html_proofer/element.rb', line 109

def ignore?
  return true if @node.attributes["data-proofer-ignore"]
  return true if ancestors_ignorable?

  return true if url&.ignore?

  false
end

#img_tag?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/html_proofer/element.rb', line 45

def img_tag?
  @node.name == "img"
end


23
24
25
# File 'lib/html_proofer/element.rb', line 23

def link_attribute
  meta_content || src || srcset || href
end

Returns:

  • (Boolean)


75
76
77
# File 'lib/html_proofer/element.rb', line 75

def link_tag?
  @node.name == "link"
end

#meta_contentObject



27
28
29
30
31
32
# File 'lib/html_proofer/element.rb', line 27

def meta_content
  return nil unless meta_tag?
  return swap_attributes("content") if attribute_swapped?

  @node["content"]
end

#meta_tag?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/html_proofer/element.rb', line 34

def meta_tag?
  @node.name == "meta"
end

#multiple_sizes?Boolean

Returns:

  • (Boolean)


93
94
95
96
97
98
99
# File 'lib/html_proofer/element.rb', line 93

def multiple_sizes?
  return false if blank?(srcsets)

  srcsets.any? do |srcset|
    !blank?(srcset) && srcset.split(" ").size > 1
  end
end

#multiple_srcsets?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/html_proofer/element.rb', line 83

def multiple_srcsets?
  !blank?(srcset) && srcset.split(",").size > 1
end

#script_tag?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/html_proofer/element.rb', line 49

def script_tag?
  @node.name == "script"
end

#source_tag?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/html_proofer/element.rb', line 60

def source_tag?
  @node.name == "source"
end

#srcObject



38
39
40
41
42
43
# File 'lib/html_proofer/element.rb', line 38

def src
  return nil if !img_tag? && !script_tag? && !source_tag?
  return swap_attributes("src") if attribute_swapped?

  @node["src"]
end

#srcsetObject



53
54
55
56
57
58
# File 'lib/html_proofer/element.rb', line 53

def srcset
  return nil if !img_tag? && !source_tag?
  return swap_attributes("srcset") if attribute_swapped?

  @node["srcset"]
end

#srcsetsObject



87
88
89
90
91
# File 'lib/html_proofer/element.rb', line 87

def srcsets
  return nil if blank?(srcset)

  srcset.split(",").map(&:strip)
end

#srcsets_wo_sizesObject



101
102
103
104
105
106
107
# File 'lib/html_proofer/element.rb', line 101

def srcsets_wo_sizes
  return nil if blank?(srcsets)

  srcsets.map do |srcset|
    srcset.split(" ").first
  end
end