class MicroMicro::Parsers::ValueClassPatternParser
Constants
- HTML_ATTRIBUTES_MAP
@see microformats.org/wiki/value-class-pattern#Basic_Parsing @see microformats.org/wiki/value-class-pattern#Date_and_time_values
Attributes
node[R]
separator[R]
Public Class Methods
new(node, separator = '')
click to toggle source
@param context [Nokogiri::XML::Element] @param separator [String]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 15 def initialize(node, separator = '') @node = node @separator = separator end
nodes_from(context, node_set = Nokogiri::XML::NodeSet.new(context.document, []))
click to toggle source
@param context [Nokogiri::XML::NodeSet, Nokogiri::XML::Element] @param node_set [Nokogiri::XML::NodeSet] @return [Nokogiri::XML::NodeSet]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 33 def self.nodes_from(context, node_set = Nokogiri::XML::NodeSet.new(context.document, [])) context.each { |node| nodes_from(node, node_set) } if context.is_a?(Nokogiri::XML::NodeSet) if context.is_a?(Nokogiri::XML::Element) && !Document.ignore_node?(context) if value_class_node?(context) || value_title_node?(context) node_set << context else nodes_from(context.element_children, node_set) end end node_set end
value_class_node?(node)
click to toggle source
@param node [Nokogiri::XML::Element] @return [Boolean]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 49 def self.value_class_node?(node) node.classes.include?('value') end
value_from(node)
click to toggle source
@param node [Nokogiri::XML::Element] @return [String, nil]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 55 def self.value_from(node) return node['title'] if value_title_node?(node) HTML_ATTRIBUTES_MAP.each do |attribute, names| return node[attribute] if names.include?(node.name) && node[attribute] end node.text end
value_title_node?(node)
click to toggle source
@param node [Nokogiri::XML::Element] @return [Boolean]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 67 def self.value_title_node?(node) node.classes.include?('value-title') end
Public Instance Methods
value()
click to toggle source
@return [String, nil]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 21 def value @value ||= values.join(separator).strip if values.any? end
values()
click to toggle source
@return [Array<String>]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 26 def values @values ||= value_nodes.map { |value_node| self.class.value_from(value_node) }.select(&:present?) end
Private Instance Methods
value_nodes()
click to toggle source
@return [Nokogiri::XML::NodeSet]
# File lib/micro_micro/parsers/value_class_pattern_parser.rb, line 76 def value_nodes @value_nodes ||= self.class.nodes_from(node) end