saxaphone 0.3.0 → 0.3.1
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/saxaphone/element.rb +11 -1
- data/test/element_test.rb +6 -3
- metadata +3 -3
data/lib/saxaphone/element.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
1
3
|
module Saxaphone
|
2
4
|
class Element
|
3
5
|
@@base_class_name = 'Saxaphone::Element'
|
@@ -28,10 +30,18 @@ module Saxaphone
|
|
28
30
|
element_handlers[element_name] = ElementHandler.new(class_name, block)
|
29
31
|
end
|
30
32
|
|
33
|
+
def store_attributes(*attribute_names)
|
34
|
+
@stored_attributes = attribute_names.flatten.to_set
|
35
|
+
end
|
36
|
+
|
31
37
|
def element_handlers
|
32
38
|
@element_handlers ||= {}
|
33
39
|
end
|
34
40
|
|
41
|
+
def stored_attributes
|
42
|
+
@stored_attributes ||= Set.new
|
43
|
+
end
|
44
|
+
|
35
45
|
def parse(xml)
|
36
46
|
Saxaphone::Document.parse(xml, self)
|
37
47
|
end
|
@@ -41,7 +51,7 @@ module Saxaphone
|
|
41
51
|
def initialize(name = '', content = '', attribute_array = [])
|
42
52
|
self.name = name
|
43
53
|
self.content = content
|
44
|
-
self.attributes = Hash[attribute_array]
|
54
|
+
self.attributes = Hash[attribute_array.select { |(key, value)| self.class.stored_attributes.include?(key) }]
|
45
55
|
setup
|
46
56
|
end
|
47
57
|
|
data/test/element_test.rb
CHANGED
@@ -16,11 +16,14 @@ class Saxaphone::ElementTest < MiniTest::Spec
|
|
16
16
|
assert_equal 'hola', element.setup_attr
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
element = Saxaphone::Element
|
19
|
+
def test_initialize_with_attributes
|
20
|
+
element = Class.new(Saxaphone::Element) do
|
21
|
+
store_attributes 'a', 'm'
|
22
|
+
end.new('foo', 'bar', [['a', 'b'], ['m', 'n'], ['x', 'y']])
|
23
|
+
|
21
24
|
assert_equal 'foo', element.name
|
22
25
|
assert_equal 'bar', element.content
|
23
|
-
assert_equal({'a' => 'b'}, element.attributes)
|
26
|
+
assert_equal({'a' => 'b', 'm' => 'n'}, element.attributes)
|
24
27
|
end
|
25
28
|
|
26
29
|
def test_element_attributes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saxaphone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
requirement: &
|
17
|
+
requirement: &2162445820 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2162445820
|
26
26
|
description: Use objects
|
27
27
|
email: developer@matthewhiggins.com
|
28
28
|
executables: []
|