54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/microformats/format_parser.rb', line 54
def parse_element(element)
prop_classes = property_classes(element)
prop_classes = backcompat_property_classes(element) if @mode_backcompat
bc_classes_found = false
fmt_classes = format_classes(element)
prop_classes.each do |p_class|
element_type = prefix_from_class(p_class)
@found_prefixes.add(element_type.to_sym)
end
fmt_classes.each do |p_class|
element_type = prefix_from_class(p_class)
@found_prefixes.add(element_type.to_sym)
end
if fmt_classes.empty?
fmt_classes = backcompat_format_classes(element)
bc_classes_found = true unless fmt_classes.empty?
end
if prop_classes.length >= 1
if fmt_classes.length >= 1
prop_classes.each do |element_class|
element_type = prefix_from_class(element_class)
property_name = property_from_class(element_class)
parsed_format = FormatParser.new.parse(element, base: @base, element_type: element_type, format_class_array: fmt_classes, backcompat: bc_classes_found)
if @value.nil?
if @format_property_type == 'p' && property_name == 'name'
@value = parsed_format['value']
elsif @format_property_type == 'u' && property_name == 'url'
@value = parsed_format['value']
end
end
@properties[property_name] = [] if @properties[property_name].nil?
@properties[property_name] << parsed_format
end
else
prop_classes.each do |element_class|
element_type = prefix_from_class(element_class)
property_name = property_from_class(element_class)
parsed_property = PropertyParser.new.parse(element, base: @base, element_type: element_type, backcompat: @mode_backcompat)
unless parsed_property.nil?
@properties[property_name] = [] if @properties[property_name].nil?
@properties[property_name] << parsed_property
end
end
parse_nodeset(element.children)
end
elsif fmt_classes.length >= 1
@children << FormatParser.new.parse(element, base: @base, format_class_array: fmt_classes, backcompat: bc_classes_found)
else
parse_nodeset(element.children)
end
end
|