pauldix-sax-machine 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/sax-machine.rb
CHANGED
@@ -21,10 +21,11 @@ module SAXMachine
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def element_config_for_attribute(name, attrs)
|
24
|
-
@top_level_elements.
|
24
|
+
element_configs = @top_level_elements.select do |element_config|
|
25
25
|
element_config.name == name &&
|
26
26
|
element_config.has_value_and_attrs_match?(attrs)
|
27
27
|
end
|
28
|
+
element_configs.empty? ? nil : element_configs
|
28
29
|
end
|
29
30
|
|
30
31
|
def element_config_for_tag(name, attrs)
|
@@ -67,14 +67,16 @@ module SAXMachine
|
|
67
67
|
def parse_element_attribute
|
68
68
|
unless parsed_config?
|
69
69
|
mark_as_parsed
|
70
|
-
@
|
70
|
+
@element_config.each do |config|
|
71
|
+
@object.send(config.setter, config.value_from_attrs(@attrs))
|
72
|
+
end
|
71
73
|
end
|
72
74
|
|
73
75
|
@element_config = nil
|
74
76
|
end
|
75
77
|
|
76
78
|
def mark_as_parsed
|
77
|
-
@parsed_configs[@element_config] = true unless @element_config.collection?
|
79
|
+
@parsed_configs[@element_config] = true unless (@element_config.respond_to?(:collection?) && @element_config.collection?)
|
78
80
|
end
|
79
81
|
|
80
82
|
def parsed_config?
|
@@ -209,6 +209,17 @@ describe "SAXMachine" do
|
|
209
209
|
document = @klass.parse("<link foo='test'/>")
|
210
210
|
document.link.should == 'test'
|
211
211
|
end
|
212
|
+
|
213
|
+
it "should save two different attribute values on a single tag" do
|
214
|
+
@klass = Class.new do
|
215
|
+
include SAXMachine
|
216
|
+
element :link, :value => :foo, :as => :first
|
217
|
+
element :link, :value => :bar, :as => :second
|
218
|
+
end
|
219
|
+
document = @klass.parse("<link foo='foo value' bar='bar value'></link>")
|
220
|
+
document.first.should == "foo value"
|
221
|
+
document.second.should == "bar value"
|
222
|
+
end
|
212
223
|
end
|
213
224
|
end
|
214
225
|
end
|