Class: Microformats2::PropertyParser
- Inherits:
-
Object
- Object
- Microformats2::PropertyParser
- Defined in:
- lib/microformats2/property_parser.rb
Class Method Summary collapse
- .format_classes(element) ⇒ Object
- .parse(element, base) ⇒ Object
- .parse_for_properties(element) ⇒ Object
- .parse_node(node) ⇒ Object
- .parse_nodeset(nodeset) ⇒ Object
- .parse_property(element) ⇒ Object
- .property_classes(element) ⇒ Object
Class Method Details
.format_classes(element) ⇒ Object
45 46 47 48 49 |
# File 'lib/microformats2/property_parser.rb', line 45 def format_classes(element) element.attribute("class").to_s.split.select do |html_class| html_class =~ Format::CLASS_REG_EXP end end |
.parse(element, base) ⇒ Object
4 5 6 7 |
# File 'lib/microformats2/property_parser.rb', line 4 def parse(element, base) @@base = base parse_node(element).flatten.compact end |
.parse_for_properties(element) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/microformats2/property_parser.rb', line 20 def parse_for_properties(element) if property_classes(element).length >= 1 parse_property(element) elsif format_classes(element).length >= 1 #do nothing because we don't want child elements ending up with their properties here else parse_nodeset(element.children) end end |
.parse_node(node) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/microformats2/property_parser.rb', line 9 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 |
.parse_nodeset(nodeset) ⇒ Object
16 17 18 |
# File 'lib/microformats2/property_parser.rb', line 16 def parse_nodeset(nodeset) nodeset.map { |node| parse_node(node) } end |
.parse_property(element) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/microformats2/property_parser.rb', line 30 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 |
.property_classes(element) ⇒ Object
39 40 41 42 43 |
# File 'lib/microformats2/property_parser.rb', line 39 def property_classes(element) element.attribute("class").to_s.split.select do |html_class| html_class =~ Property::CLASS_REG_EXP end end |