mochigome 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/data_node.rb +11 -4
- data/lib/mochigome_ver.rb +1 -1
- data/test/unit/data_node_test.rb +10 -4
- metadata +4 -4
data/lib/data_node.rb
CHANGED
@@ -82,8 +82,12 @@ module Mochigome
|
|
82
82
|
end
|
83
83
|
node.add_child(Nokogiri::XML::Comment.new(doc, @comment)) if @comment
|
84
84
|
each do |key, value|
|
85
|
-
|
86
|
-
|
85
|
+
if key.to_s.start_with?("_")
|
86
|
+
sub_node = Nokogiri::XML::Node.new(key.to_s.sub("_", ""), doc)
|
87
|
+
else
|
88
|
+
sub_node = Nokogiri::XML::Node.new("datum", doc)
|
89
|
+
sub_node["name"] = key.to_s.titleize
|
90
|
+
end
|
87
91
|
sub_node.content = value
|
88
92
|
node.add_child(sub_node)
|
89
93
|
end
|
@@ -95,7 +99,9 @@ module Mochigome
|
|
95
99
|
|
96
100
|
# TODO: Should handle trickier situations involving datanodes not having various columns
|
97
101
|
def flat_column_names
|
98
|
-
colnames = (["name"] + keys).
|
102
|
+
colnames = (["name"] + keys).
|
103
|
+
reject{|key| key.to_s.start_with?("_")}.
|
104
|
+
map{|key| "#{@type_name}::#{key}"}
|
99
105
|
choices = @children.map(&:flat_column_names)
|
100
106
|
colnames += choices.max_by(&:size) || []
|
101
107
|
colnames
|
@@ -103,7 +109,8 @@ module Mochigome
|
|
103
109
|
|
104
110
|
# TODO: Should handle trickier situations involving datanodes not having various columns
|
105
111
|
def append_rows_to(table, pad, stack = [])
|
106
|
-
|
112
|
+
row_vals = keys.reject{|k| k.to_s.start_with?("_")}.map{|k| self[k]}
|
113
|
+
stack.push([@name] + row_vals)
|
107
114
|
if @children.size > 0
|
108
115
|
@children.each {|child| child.send(:append_rows_to, table, pad, stack)}
|
109
116
|
else
|
data/lib/mochigome_ver.rb
CHANGED
data/test/unit/data_node_test.rb
CHANGED
@@ -101,7 +101,7 @@ describe Mochigome::DataNode do
|
|
101
101
|
@datanode.comment = "Foo"
|
102
102
|
@datanode.merge! [{:id => 400}, {:apples => 1}, {:box_cutters => 2}, {:can_openers => 3}]
|
103
103
|
emp1 = @datanode << Mochigome::DataNode.new(:employee, :alice)
|
104
|
-
emp1.merge! [{:id => 500}, {:x => 9}, {:y => 8}, {:z => 7}, {:internal_type => "Cyborg"}]
|
104
|
+
emp1.merge! [{:id => 500}, {:x => 9}, {:y => 8}, {:z => 7}, {:internal_type => "Cyborg"}, {:_foo => "bar"}]
|
105
105
|
emp2 = @datanode << Mochigome::DataNode.new(:employee, :bob)
|
106
106
|
emp2.merge! [{:id => 600}, {:x => 5}, {:y => 4}, {:z => 8734}, {:internal_type => "Human"}]
|
107
107
|
emp2 << Mochigome::DataNode.new(:pet, :lassie)
|
@@ -122,8 +122,8 @@ describe Mochigome::DataNode do
|
|
122
122
|
]
|
123
123
|
end
|
124
124
|
|
125
|
-
it "can convert to an XML document with
|
126
|
-
# Why stringify and reparse
|
125
|
+
it "can convert to an XML document with correct attributes and elements" do
|
126
|
+
# Why stringify and reparse? So that we could use another XML generator
|
127
127
|
doc = Nokogiri::XML(@datanode.to_xml.to_s)
|
128
128
|
|
129
129
|
comment = doc.xpath('/node[@type="Corporation"]/comment()').first
|
@@ -139,8 +139,14 @@ describe Mochigome::DataNode do
|
|
139
139
|
assert_equal "alice", emp_nodes.first['name']
|
140
140
|
assert_equal "bob", emp_nodes.last['name']
|
141
141
|
assert_equal "Cyborg", emp_nodes.first['internal_type']
|
142
|
-
assert_equal "4", emp_nodes.last.xpath('
|
142
|
+
assert_equal "4", emp_nodes.last.xpath('datum[@name="Y"]').first.content
|
143
143
|
assert_equal "lassie", emp_nodes.last.xpath('node').first['name']
|
144
|
+
|
145
|
+
# Keys that start with an underscore are to be turned into so-named elems
|
146
|
+
assert_empty emp_nodes.first.xpath('datum').select{|datum|
|
147
|
+
datum['name'] =~ /foo/i
|
148
|
+
}
|
149
|
+
assert_equal "bar", emp_nodes.first.xpath('foo').first.content
|
144
150
|
end
|
145
151
|
|
146
152
|
it "can convert to a flattened Ruport table" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mochigome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 9
|
10
|
+
version: 0.1.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Mike Simon
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-05-
|
18
|
+
date: 2012-05-16 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|