Class: Microformats2::PropertyParser

Inherits:
Object
  • Object
show all
Defined in:
lib/microformats2/property_parser.rb

Class Method Summary collapse

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