Class: MicroMicro::Parsers::ValueClassPatternParser
- Inherits:
-
Object
- Object
- MicroMicro::Parsers::ValueClassPatternParser
- Defined in:
- lib/micro_micro/parsers/value_class_pattern_parser.rb
Constant Summary collapse
- HTML_ATTRIBUTES_MAP =
{ "alt" => ["area", "img"], "value" => ["data"], "title" => ["abbr"], "datetime" => ["del", "ins", "time"] }.freeze
Class Method Summary collapse
- .node_set_from(context, node_set = Nokogiri::XML::NodeSet.new(context.document, [])) ⇒ Nokogiri::XML::NodeSet
- .value_from(node) ⇒ String?
Instance Method Summary collapse
-
#initialize(node, separator = "") ⇒ ValueClassPatternParser
constructor
A new instance of ValueClassPatternParser.
- #value ⇒ String?
- #values ⇒ Array<String>
Constructor Details
#initialize(node, separator = "") ⇒ ValueClassPatternParser
Returns a new instance of ValueClassPatternParser.
44 45 46 47 |
# File 'lib/micro_micro/parsers/value_class_pattern_parser.rb', line 44 def initialize(node, separator = "") @node = node @separator = separator end |
Class Method Details
.node_set_from(context, node_set = Nokogiri::XML::NodeSet.new(context.document, [])) ⇒ Nokogiri::XML::NodeSet
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/micro_micro/parsers/value_class_pattern_parser.rb', line 20 def self.node_set_from(context, node_set = Nokogiri::XML::NodeSet.new(context.document, [])) context.each { |node| node_set_from(node, node_set) } if context.is_a?(Nokogiri::XML::NodeSet) if context.is_a?(Nokogiri::XML::Element) && !Helpers.ignore_node?(context) if Helpers.value_class_node?(context) || Helpers.value_title_node?(context) node_set << context else node_set_from(context.element_children, node_set) end end node_set end |
.value_from(node) ⇒ String?
36 37 38 39 40 |
# File 'lib/micro_micro/parsers/value_class_pattern_parser.rb', line 36 def self.value_from(node) return node["title"] if Helpers.value_title_node?(node) Helpers.attribute_value_from(node, HTML_ATTRIBUTES_MAP) || node.text end |
Instance Method Details
#value ⇒ String?
50 51 52 |
# File 'lib/micro_micro/parsers/value_class_pattern_parser.rb', line 50 def value @value ||= values.join(separator).strip if values.any? end |
#values ⇒ Array<String>
55 56 57 58 59 60 61 62 |
# File 'lib/micro_micro/parsers/value_class_pattern_parser.rb', line 55 def values @values ||= self .class .node_set_from(node) .map { |value_node| self.class.value_from(value_node) } .compact_blank! end |