astro-sax-machine 0.0.16 → 0.0.17
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/sax_config.rb +9 -9
- data/lib/sax-machine/sax_document.rb +6 -2
- metadata +1 -1
@@ -6,16 +6,18 @@ module SAXMachine
|
|
6
6
|
attr_reader :top_level_elements, :collection_elements
|
7
7
|
|
8
8
|
def initialize
|
9
|
-
@top_level_elements =
|
10
|
-
@collection_elements =
|
9
|
+
@top_level_elements = {}
|
10
|
+
@collection_elements = {}
|
11
11
|
end
|
12
12
|
|
13
13
|
def add_top_level_element(name, options)
|
14
|
-
@top_level_elements
|
14
|
+
@top_level_elements[name.to_s] ||= []
|
15
|
+
@top_level_elements[name.to_s] << ElementConfig.new(name, options)
|
15
16
|
end
|
16
17
|
|
17
18
|
def add_collection_element(name, options)
|
18
|
-
@collection_elements
|
19
|
+
@collection_elements[name.to_s] ||= []
|
20
|
+
@collection_elements[name.to_s] << CollectionConfig.new(name, options)
|
19
21
|
end
|
20
22
|
|
21
23
|
def collection_config(name, nsstack)
|
@@ -23,7 +25,7 @@ module SAXMachine
|
|
23
25
|
prefix, name = nil, prefix unless name # No prefix
|
24
26
|
namespace = nsstack[prefix]
|
25
27
|
|
26
|
-
@collection_elements.detect { |ce|
|
28
|
+
(@collection_elements[name.to_s] || []).detect { |ce|
|
27
29
|
ce.name.to_s == name.to_s &&
|
28
30
|
ce.xmlns_match?(namespace)
|
29
31
|
}
|
@@ -31,8 +33,7 @@ module SAXMachine
|
|
31
33
|
|
32
34
|
def element_configs_for_attribute(name, attrs)
|
33
35
|
name = name.split(':', 2).last
|
34
|
-
@top_level_elements.select do |element_config|
|
35
|
-
element_config.name == name &&
|
36
|
+
(@top_level_elements[name.to_s] || []).select do |element_config|
|
36
37
|
element_config.has_value_and_attrs_match?(attrs)
|
37
38
|
end
|
38
39
|
end
|
@@ -42,8 +43,7 @@ module SAXMachine
|
|
42
43
|
prefix, name = nil, prefix unless name # No prefix
|
43
44
|
namespace = nsstack[prefix]
|
44
45
|
|
45
|
-
@top_level_elements.detect do |element_config|
|
46
|
-
element_config.name == name &&
|
46
|
+
(@top_level_elements[name.to_s] || []).detect do |element_config|
|
47
47
|
element_config.xmlns_match?(namespace) &&
|
48
48
|
element_config.attrs_match?(attrs)
|
49
49
|
end
|
@@ -43,11 +43,15 @@ module SAXMachine
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def columns
|
46
|
-
|
46
|
+
r = []
|
47
|
+
sax_config.top_level_elements.each do |name, ecs|
|
48
|
+
r += ecs
|
49
|
+
end
|
50
|
+
r
|
47
51
|
end
|
48
52
|
|
49
53
|
def column(sym)
|
50
|
-
|
54
|
+
sax_config.top_level_elements[sym.to_s][0]
|
51
55
|
end
|
52
56
|
|
53
57
|
def data_class(sym)
|