Sha256: e186e87001115e088f3f54b9b13377b69002274dfb8af7e8b66e3889965c7a1d
Contents?: true
Size: 1.32 KB
Versions: 4
Compression:
Stored size: 1.32 KB
Contents
module Microformats2 class PropertyParser class << self def parse(element) 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).parse properties = format_classes(element).empty? ? PropertyParser.parse(element.children) : [] [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
4 entries across 4 versions & 1 rubygems