Class: A11y::Lint::ErbNode

Inherits:
Object
  • Object
show all
Defined in:
lib/a11y/lint/erb_node.rb

Overview

Wraps a Nokogiri node or extracted ERB output tag as a queryable node for lint rules.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(line:, nokogiri_node: nil, ruby_code: nil) ⇒ ErbNode

Returns a new instance of ErbNode.



10
11
12
13
14
# File 'lib/a11y/lint/erb_node.rb', line 10

def initialize(line:, nokogiri_node: nil, ruby_code: nil)
  @nokogiri_node = nokogiri_node
  @ruby_code_string = ruby_code
  @line = line
end

Instance Attribute Details

#lineObject (readonly)

Returns the value of attribute line.



8
9
10
# File 'lib/a11y/lint/erb_node.rb', line 8

def line
  @line
end

Instance Method Details

#attribute?(name) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/a11y/lint/erb_node.rb', line 20

def attribute?(name)
  attributes.key?(name)
end

#attributesObject



24
25
26
# File 'lib/a11y/lint/erb_node.rb', line 24

def attributes
  @attributes ||= extract_attributes
end

#childrenObject

Returns direct element children wrapped as ErbNode objects.



33
34
35
36
37
38
39
# File 'lib/a11y/lint/erb_node.rb', line 33

def children
  return [] unless @nokogiri_node

  @nokogiri_node.element_children.map do |child|
    ErbNode.new(nokogiri_node: child, line: child.line)
  end
end

#ruby_codeObject



28
29
30
# File 'lib/a11y/lint/erb_node.rb', line 28

def ruby_code
  @ruby_code_string
end

#tag_nameObject



16
17
18
# File 'lib/a11y/lint/erb_node.rb', line 16

def tag_name
  @nokogiri_node&.name
end