Sha256: 324c85a5dd6c6fc971fa99c1b4d1c7ffa3ccc34eadae4c11dd29d802fc724827
Contents?: true
Size: 1.37 KB
Versions: 5
Compression:
Stored size: 1.37 KB
Contents
module Microformats2 class PropertyParser class << self def parse(element, base) @@base = base parse_node(element).flatten.compact end def parse_node(node) case when node.is_a?(Nokogiri::XML::NodeSet) then parse_nodeset(node) when node.is_a?(Nokogiri::XML::Element) then [parse_for_properties(node)] end end def parse_nodeset(nodeset) nodeset.map { |node| parse_node(node) } end def parse_for_properties(element) if property_classes(element).length >= 1 parse_property(element) else parse_nodeset(element.children) end end def parse_property(element) property_classes(element).map do |property_class| property = Property.new(element, property_class, nil, @@base).parse properties = format_classes(element).empty? ? PropertyParser.parse(element.children, @@base) : [] [property].concat properties end end def property_classes(element) element.attribute("class").to_s.split.select do |html_class| html_class =~ Property::CLASS_REG_EXP end end def format_classes(element) element.attribute("class").to_s.split.select do |html_class| html_class =~ Format::CLASS_REG_EXP end end end # class << self end end
Version data entries
5 entries across 5 versions & 1 rubygems