xml-fu 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/CHANGELOG.md +12 -2
- data/README.md +49 -26
- data/lib/xml-fu.rb +16 -3
- data/lib/xml-fu/hash.rb +43 -39
- data/lib/xml-fu/node.rb +15 -10
- data/lib/xml-fu/version.rb +1 -1
- data/spec/lib/xml-fu_spec.rb +75 -0
- metadata +7 -5
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
## Changes by Version
|
2
2
|
|
3
|
+
### 0.1.8
|
4
|
+
|
5
|
+
* Fixed XmlFu.symbol_conversion_algorithm functionality
|
6
|
+
* Added specs for above
|
7
|
+
* Removed :snake_case algorithm
|
8
|
+
** It never worked and can be implemented via a custom algorithm.
|
9
|
+
* Added :upcase algorithm
|
10
|
+
* Added :downcase algorithm
|
11
|
+
* Updated README
|
12
|
+
|
3
13
|
### 0.1.7
|
4
14
|
|
5
15
|
* Added pass through for Builder::XmlMarkup options via XmlFu.xml
|
@@ -41,9 +51,9 @@
|
|
41
51
|
|
42
52
|
### 0.1.0
|
43
53
|
|
44
|
-
* Initial version. born as a replacement of
|
54
|
+
* Initial version. born as a replacement of
|
45
55
|
[Gyoku](http://www.rubygems.org/gems/gyoku)
|
46
56
|
with corrected assumptions about Array values and
|
47
57
|
no need for meta tags such as:
|
48
|
-
* :order!
|
58
|
+
* :order!
|
49
59
|
* :attributes!
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Convert Ruby Hashes to XML
|
4
4
|
|
5
|
-
A hash is meant to be a structured set of data. So is XML. The two are very similar in that they have
|
5
|
+
A hash is meant to be a structured set of data. So is XML. The two are very similar in that they have
|
6
6
|
the capability of nesting information within a tree structure. With XML you have nodes. With Hashes, you
|
7
7
|
have key/value pairs. The value of an XML node is referenced by its parent's name. A hash value is referenced
|
8
8
|
by its key. This basic lesson tells the majority of what you need to know about creating XML via Hashes in
|
@@ -29,30 +29,53 @@ Or install it yourself as:
|
|
29
29
|
Hash keys are translated into XML nodes (whether it be a document node or attribute node).
|
30
30
|
|
31
31
|
|
32
|
-
### Translation
|
32
|
+
### Key Translation
|
33
33
|
|
34
|
-
With Ruby, a hash key may be a string or a symbol.
|
35
|
-
|
36
|
-
|
34
|
+
With Ruby, a hash key may be a string or a symbol. **Strings will be preserved** as they may
|
35
|
+
contain node namespacing ("foo:Bar" would need preserved rather than converted). Symbols will
|
36
|
+
be converted into an XML safe name by lower camel-casing them. So :foo\_bar will become "fooBar".
|
37
|
+
You may change the conversion algorithm to your liking by setting the
|
38
|
+
XmlFu.symbol\_conversion\_algorithm to a lambda or proc of your liking.
|
37
39
|
|
38
40
|
|
39
41
|
#### Built-In Algorithms
|
40
42
|
|
41
|
-
|
43
|
+
For a complete list, reference XmlFu::Node::ALGORITHMS
|
44
|
+
|
42
45
|
* :camelcase
|
46
|
+
* :downcase
|
47
|
+
* :lower\_camelcase **(default)**
|
43
48
|
* :none (result of :sym.to\_s)
|
44
|
-
* :
|
49
|
+
* :upcase
|
45
50
|
|
46
51
|
```ruby
|
47
|
-
#
|
48
|
-
XmlFu.
|
52
|
+
# Default Algorithm (:lower_camelcase)
|
53
|
+
XmlFu.xml( :FooBar => "bang" ) #=> "<fooBar>bang</fooBar>"
|
54
|
+
XmlFu.xml( :foo_bar => "bang" ) #=> "<fooBar>bang</fooBar>"
|
55
|
+
|
56
|
+
|
57
|
+
# Built-in Algorithms (:camelcase)
|
58
|
+
XmlFu.symbol_conversion_algorithm = :camelcase
|
59
|
+
XmlFu.xml( :Foo_Bar => "bang" ) #=> "<FooBar>bang</FooBar>"
|
60
|
+
XmlFu.xml( :foo_bar => "bang" ) #=> "<FooBar>bang</FooBar>"
|
61
|
+
|
62
|
+
|
63
|
+
# Built-in Algorithms (:downcase)
|
64
|
+
XmlFu.symbol_conversion_algorithm = :downcase
|
65
|
+
XmlFu.xml( :foo_bar => "bang" ) #=> "<foo_bar>bang</foo_bar>"
|
66
|
+
XmlFu.xml( :Foo_Bar => "bang" ) #=> "<foo_bar>bang</foo_bar>"
|
67
|
+
XmlFu.xml( :FOO => "bar" ) #=> "<foo>bar</foo>"
|
68
|
+
|
69
|
+
|
70
|
+
# Built-in Algorithms (:upcase)
|
71
|
+
XmlFu.symbol_conversion_algorithm = :upcase
|
72
|
+
XmlFu.xml( :foo_bar => "bang" ) #=> "<FOO_BAR>bang</FOO_BAR>"
|
73
|
+
XmlFu.xml( :Foo_Bar => "bang" ) #=> "<FOO_BAR>bang</FOO_BAR>"
|
74
|
+
XmlFu.xml( :foo => "bar" ) #=> "<FOO>bar</FOO>"
|
49
75
|
|
50
|
-
XmlFu.xml( :foo => "bar" ) #=> "<foo>bar</foo>"
|
51
|
-
XmlFu.xml( "foo" => "bar" ) #=> "<foo>bar</foo>"
|
52
|
-
# :foo and "foo" both translate to <foo>
|
53
76
|
|
54
77
|
# Custom Algorithm
|
55
|
-
XmlFu.symbol_conversion_algorithm {|sym| sym.
|
78
|
+
XmlFu.symbol_conversion_algorithm = lambda {|sym| sym.do_something_special }
|
56
79
|
```
|
57
80
|
|
58
81
|
### Types of Nodes
|
@@ -91,14 +114,14 @@ XmlFu.xml("foo!" => "<bar/>") #=> "<foo><bar/></foo>"
|
|
91
114
|
|
92
115
|
#### Attribute Node (@key)
|
93
116
|
|
94
|
-
Yes, the attributes of an XML node are nodes themselves, so we need a way of defining them. Since XPath syntax
|
117
|
+
Yes, the attributes of an XML node are nodes themselves, so we need a way of defining them. Since XPath syntax
|
95
118
|
uses @ to denote an attribute, so does XmlFu.
|
96
119
|
|
97
120
|
``` ruby
|
98
|
-
XmlFu.xml(:agent => {
|
99
|
-
"@id" => "007",
|
100
|
-
"FirstName" => "James",
|
101
|
-
"LastName" => "Bond"
|
121
|
+
XmlFu.xml(:agent => {
|
122
|
+
"@id" => "007",
|
123
|
+
"FirstName" => "James",
|
124
|
+
"LastName" => "Bond"
|
102
125
|
})
|
103
126
|
#=> <agent id="007"><FirstName>James</FirstName><LastName>Bond</LastName></agent>
|
104
127
|
```
|
@@ -156,7 +179,7 @@ XmlFu.xml(:agent => {"@id" => "007", "=" => "James Bond"})
|
|
156
179
|
#=> "<agent id=\"007\">James Bond</agent>"
|
157
180
|
```
|
158
181
|
|
159
|
-
This key will not get around the self-closing node rule. The only nodes that will be used in this case will be
|
182
|
+
This key will not get around the self-closing node rule. The only nodes that will be used in this case will be
|
160
183
|
attribute nodes and additional content will be ignored.
|
161
184
|
|
162
185
|
```ruby
|
@@ -167,7 +190,7 @@ XmlFu.xml("foo/" => {"@id" => "123", "=" => "You can't see me."})
|
|
167
190
|
|
168
191
|
### Arrays
|
169
192
|
|
170
|
-
Since the value in a key/value pair is (for the most part) used as the contents of a key/node, there are some
|
193
|
+
Since the value in a key/value pair is (for the most part) used as the contents of a key/node, there are some
|
171
194
|
assumptions that XmlFu makes when dealing with Array values.
|
172
195
|
|
173
196
|
* For a typical key, the contents of the array are considered to be nodes to be contained within the <key> node.
|
@@ -177,7 +200,7 @@ assumptions that XmlFu makes when dealing with Array values.
|
|
177
200
|
|
178
201
|
``` ruby
|
179
202
|
XmlFu.xml( "SecretAgents" => [
|
180
|
-
{ "agent/" => { "@id"=>"006", "@name"=>"Alec Trevelyan" } },
|
203
|
+
{ "agent/" => { "@id"=>"006", "@name"=>"Alec Trevelyan" } },
|
181
204
|
{ "agent/" => { "@id"=>"007", "@name"=>"James Bond" } }
|
182
205
|
])
|
183
206
|
#=> "<SecretAgents><agent name=\"Alec Trevelyan\" id=\"006\"/><agent name=\"James Bond\" id=\"007\"/></SecretAgents>"
|
@@ -202,12 +225,12 @@ How about a more complex example:
|
|
202
225
|
|
203
226
|
```ruby
|
204
227
|
XmlFu.xml(
|
205
|
-
"person*" => {
|
206
|
-
"@foo" => "bar",
|
228
|
+
"person*" => {
|
229
|
+
"@foo" => "bar",
|
207
230
|
"=" => [
|
208
|
-
{"@foo" => "nope", "=" => "Bob"},
|
231
|
+
{"@foo" => "nope", "=" => "Bob"},
|
209
232
|
"Sheila"
|
210
|
-
]
|
233
|
+
]
|
211
234
|
}
|
212
235
|
)
|
213
236
|
#=> "<person foo=\"nope\">Bob</person><person foo=\"bar\">Sheila</person>"
|
@@ -268,7 +291,7 @@ are currently ignored in arrays and only Hashes are translated.
|
|
268
291
|
1. if key denotes self-closing node (key/)
|
269
292
|
* attributes are preserved with Hash values
|
270
293
|
* value and "=" values are ignored
|
271
|
-
2. if key denotes collection (key*) with Array value
|
294
|
+
2. if key denotes collection (key*) with Array value
|
272
295
|
* Array is flattened
|
273
296
|
* Only Hash and Simple values are translated
|
274
297
|
* Hashes may override default attributes set by parent
|
data/lib/xml-fu.rb
CHANGED
@@ -5,7 +5,7 @@ require "xml-fu/markup"
|
|
5
5
|
|
6
6
|
module XmlFu
|
7
7
|
class << self
|
8
|
-
|
8
|
+
|
9
9
|
# Convert construct into XML
|
10
10
|
def xml(construct, options={})
|
11
11
|
case construct
|
@@ -16,7 +16,7 @@ module XmlFu
|
|
16
16
|
end#convert
|
17
17
|
|
18
18
|
# @todo Add Nori-like parsing capability to convert XML back into XmlFu-compatible Hash/Array
|
19
|
-
# Parse XML into array of hashes. If XML used as input contains only sibling nodes, output
|
19
|
+
# Parse XML into array of hashes. If XML used as input contains only sibling nodes, output
|
20
20
|
# will be array of hashes corresponding to those sibling nodes.
|
21
21
|
#
|
22
22
|
# <foo/><bar/> => [{"foo/" => ""}, {"bar/" => ""}]
|
@@ -38,7 +38,7 @@ module XmlFu
|
|
38
38
|
################################################################################
|
39
39
|
## CONFIGURATIONS
|
40
40
|
################################################################################
|
41
|
-
|
41
|
+
|
42
42
|
@@infer_simple_value_nodes = false
|
43
43
|
|
44
44
|
# Set configuration option to be used with future releases
|
@@ -58,5 +58,18 @@ module XmlFu
|
|
58
58
|
return @@infer_simple_value_nodes
|
59
59
|
end
|
60
60
|
|
61
|
+
|
62
|
+
# @param formula_enum Formula Enumeration
|
63
|
+
# @return [lambda]
|
64
|
+
def symbol_conversion_algorithm=( formula_enum=nil, &block )
|
65
|
+
XmlFu::Node.symbol_conversion_algorithm = (formula_enum ? formula_enum : block)
|
66
|
+
end#symbol_conversion_algorithm
|
67
|
+
|
68
|
+
|
69
|
+
# @return [lambda]
|
70
|
+
def symbol_conversion_algorithm
|
71
|
+
XmlFu::Node.symbol_conversion_algorithm
|
72
|
+
end#symbol_conversion_algorithm
|
73
|
+
|
61
74
|
end#class<<self
|
62
75
|
end#XmlFu
|
data/lib/xml-fu/hash.rb
CHANGED
@@ -9,57 +9,61 @@ module XmlFu
|
|
9
9
|
# If order is of concern, use Array.to_xml
|
10
10
|
class Hash
|
11
11
|
|
12
|
-
|
13
|
-
def self.to_xml(hash, options={})
|
14
|
-
each_with_xml hash, options do |xml, name, value, attributes|
|
15
|
-
xml << Node.new(name, value, attributes).to_xml
|
16
|
-
end
|
17
|
-
end#self.to_xml
|
12
|
+
class << self
|
18
13
|
|
14
|
+
# Convert Hash to XML String
|
15
|
+
def to_xml(hash, options={})
|
16
|
+
each_with_xml hash, options do |xml, name, value, attributes|
|
17
|
+
xml << Node.new(name, value, attributes).to_xml
|
18
|
+
end
|
19
|
+
end#to_xml
|
19
20
|
|
20
|
-
# Class method to filter out attributes and content
|
21
|
-
# from a given hash
|
22
|
-
def self.filter(hash)
|
23
|
-
attribs = {}
|
24
|
-
content = hash.dup
|
25
21
|
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
# Class method to filter out attributes and content
|
23
|
+
# from a given hash
|
24
|
+
def filter(hash)
|
25
|
+
attribs = {}
|
26
|
+
content = hash.dup
|
29
27
|
|
30
|
-
|
31
|
-
|
28
|
+
content.keys.select{|k| k =~ /^@/ }.each do |k|
|
29
|
+
attribs[k[1..-1]] = content.delete(k)
|
30
|
+
end
|
32
31
|
|
33
|
-
|
34
|
-
|
32
|
+
# Use _content value if defined
|
33
|
+
content = content.delete("=") || content
|
35
34
|
|
36
|
-
|
35
|
+
return [content, attribs]
|
36
|
+
end#filter
|
37
37
|
|
38
|
-
|
39
|
-
# Logic will filter out attribute and content keys from hash values
|
40
|
-
def self.each_with_xml(hash, opts={})
|
41
|
-
xml = XmlFu::Markup.new(opts)
|
38
|
+
private
|
42
39
|
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
# Provides a convenience function to iterate over the hash
|
41
|
+
# Logic will filter out attribute and content keys from hash values
|
42
|
+
def each_with_xml(hash, opts={})
|
43
|
+
xml = XmlFu::Markup.new(opts)
|
46
44
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
node_value, node_attrs = filtered.first, filtered.last
|
51
|
-
end
|
45
|
+
hash.each do |key,value|
|
46
|
+
node_value = value
|
47
|
+
node_attrs = {}
|
52
48
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
49
|
+
# yank the attribute keys into their own hash
|
50
|
+
if value.respond_to?(:keys)
|
51
|
+
filtered = Hash.filter(value)
|
52
|
+
node_value, node_attrs = filtered.first, filtered.last
|
53
|
+
end
|
54
|
+
|
55
|
+
# Use symbol conversion algorithm to set tag name
|
56
|
+
node_name = ( Symbol === key ?
|
57
|
+
XmlFu::Node.symbol_conversion_algorithm.call(key) :
|
58
|
+
key.to_s )
|
59
|
+
|
60
|
+
yield xml, node_name, node_value, node_attrs
|
61
|
+
end
|
57
62
|
|
58
|
-
|
59
|
-
end
|
63
|
+
xml.target!
|
64
|
+
end#each_with_xml
|
60
65
|
|
61
|
-
|
62
|
-
end#self.each_with_xml
|
66
|
+
end#class << self
|
63
67
|
|
64
68
|
end#Hash
|
65
69
|
|
data/lib/xml-fu/node.rb
CHANGED
@@ -17,10 +17,11 @@ module XmlFu
|
|
17
17
|
|
18
18
|
# default set of algorithms to choose from
|
19
19
|
ALGORITHMS = {
|
20
|
-
:lower_camelcase => lambda { |sym| sym.to_s.lower_camelcase },
|
21
20
|
:camelcase => lambda { |sym| sym.to_s.camelcase },
|
22
|
-
:
|
23
|
-
:
|
21
|
+
:downcase => lambda { |sym| sym.to_s.downcase },
|
22
|
+
:lower_camelcase => lambda { |sym| sym.to_s.lower_camelcase }, # DEFAULT
|
23
|
+
:none => lambda { |sym| sym.to_s },
|
24
|
+
:upcase => lambda { |sym| sym.to_s.upcase }
|
24
25
|
}
|
25
26
|
|
26
27
|
# Class method for retrieving global Symbol-to-string conversion algorithm
|
@@ -30,9 +31,15 @@ module XmlFu
|
|
30
31
|
end#self.symbol_conversion_algorithm
|
31
32
|
|
32
33
|
# Class method for setting global Symbol-to-string conversion algorithm
|
33
|
-
# @param [lambda] algorithm
|
34
|
+
# @param [symbol, lambda] algorithm
|
35
|
+
# Can be symbol corresponding to predefined algorithm or a lambda that accepts a symbol
|
36
|
+
# as an argument and returns a string
|
34
37
|
def self.symbol_conversion_algorithm=(algorithm)
|
35
|
-
|
38
|
+
if algorithm == :default
|
39
|
+
algorithm = ALGORITHMS[:lower_camelcase]
|
40
|
+
else
|
41
|
+
algorithm = ALGORITHMS[algorithm] unless algorithm.respond_to?(:call)
|
42
|
+
end
|
36
43
|
raise(ArgumentError, "Invalid symbol conversion algorithm") unless algorithm
|
37
44
|
@symbol_conversion_algorithm = algorithm
|
38
45
|
end#self.symbol_conversion_algorithm=
|
@@ -69,8 +76,6 @@ module XmlFu
|
|
69
76
|
|
70
77
|
use_name = name_parse_special_characters(use_name)
|
71
78
|
|
72
|
-
# TODO: Add additional logic that Gyoku XmlKey puts in place
|
73
|
-
|
74
79
|
# remove ":" if name begins with ":" (i.e. no namespace)
|
75
80
|
use_name = use_name[1..-1] if use_name[0,1] == ":"
|
76
81
|
|
@@ -97,7 +102,7 @@ module XmlFu
|
|
97
102
|
|
98
103
|
# Will this be a self closing node?
|
99
104
|
if use_this.to_s[-1,1] == '/'
|
100
|
-
@self_closing = true
|
105
|
+
@self_closing = true
|
101
106
|
use_this.chop!
|
102
107
|
end
|
103
108
|
|
@@ -148,14 +153,14 @@ module XmlFu
|
|
148
153
|
case
|
149
154
|
when @self_closing && @content_type == 'container'
|
150
155
|
xml.tag!(@name, @attributes)
|
151
|
-
when @value.nil?
|
156
|
+
when @value.nil?
|
152
157
|
xml.tag!(@name, @attributes.merge!("xsi:nil" => "true"))
|
153
158
|
when ::Hash === @value
|
154
159
|
xml.tag!(@name, @attributes) { xml << XmlFu::Hash.to_xml(@value) }
|
155
160
|
when ::Array === @value
|
156
161
|
case @content_type
|
157
162
|
when "collection"
|
158
|
-
xml << XmlFu::Array.to_xml(@value.flatten, {
|
163
|
+
xml << XmlFu::Array.to_xml(@value.flatten, {
|
159
164
|
:key => (@self_closing ? "#{@name}/" : @name),
|
160
165
|
:attributes => @attributes,
|
161
166
|
:content_type => "collection"
|
data/lib/xml-fu/version.rb
CHANGED
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe XmlFu do
|
4
|
+
after(:each) do
|
5
|
+
XmlFu.symbol_conversion_algorithm = :default
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "with default symbol conversion algorithm" do
|
9
|
+
before(:each) do
|
10
|
+
XmlFu.symbol_conversion_algorithm = :default
|
11
|
+
end
|
12
|
+
|
13
|
+
{
|
14
|
+
:FooBar => "fooBar",
|
15
|
+
:foobar => "foobar"
|
16
|
+
}.each do |k,v|
|
17
|
+
it "should convert :#{k} to #{v}" do
|
18
|
+
doc = XmlFu.xml( k => "")
|
19
|
+
doc.should == "<#{v}></#{v}>"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end#default (:lower_camelcase)
|
23
|
+
|
24
|
+
|
25
|
+
describe "with built-in :camelcase algorithm" do
|
26
|
+
before(:each) do
|
27
|
+
XmlFu.symbol_conversion_algorithm = :camelcase
|
28
|
+
end
|
29
|
+
|
30
|
+
{
|
31
|
+
:foo_bar => "FooBar",
|
32
|
+
:foobar => "Foobar"
|
33
|
+
}.each do |k,v|
|
34
|
+
it "should convert :#{k} to #{v}" do
|
35
|
+
doc = XmlFu.xml( k => "")
|
36
|
+
doc.should == "<#{v}></#{v}>"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end#:camelcase
|
40
|
+
|
41
|
+
|
42
|
+
describe "with built-in :downcase algorithm" do
|
43
|
+
before(:each) do
|
44
|
+
XmlFu.symbol_conversion_algorithm = :downcase
|
45
|
+
end
|
46
|
+
|
47
|
+
{
|
48
|
+
:FOO_BAR => "foo_bar",
|
49
|
+
:FooBar => "foobar"
|
50
|
+
}.each do |k,v|
|
51
|
+
it "should convert :#{k} to #{v}" do
|
52
|
+
doc = XmlFu.xml( k => "")
|
53
|
+
doc.should == "<#{v}></#{v}>"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end#:downcase
|
57
|
+
|
58
|
+
|
59
|
+
describe "with built-in :upcase algorithm" do
|
60
|
+
before(:each) do
|
61
|
+
XmlFu.symbol_conversion_algorithm = :upcase
|
62
|
+
end
|
63
|
+
|
64
|
+
{
|
65
|
+
:foo_bar => "FOO_BAR",
|
66
|
+
:FooBar => "FOOBAR"
|
67
|
+
}.each do |k,v|
|
68
|
+
it "should convert :#{k} to #{v}" do
|
69
|
+
doc = XmlFu.xml( k => "")
|
70
|
+
doc.should == "<#{v}></#{v}>"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end#:upcase
|
74
|
+
|
75
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml-fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 8
|
10
|
+
version: 0.1.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Johnson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-07-22 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: builder
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- spec/lib/array_spec.rb
|
92
92
|
- spec/lib/hash_spec.rb
|
93
93
|
- spec/lib/node_spec.rb
|
94
|
+
- spec/lib/xml-fu_spec.rb
|
94
95
|
- spec/lib/xml_spec.rb
|
95
96
|
- spec/spec_helper.rb
|
96
97
|
- spec/xmlfu_spec.rb
|
@@ -124,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
125
|
requirements: []
|
125
126
|
|
126
127
|
rubyforge_project: xml-fu
|
127
|
-
rubygems_version: 1.8.
|
128
|
+
rubygems_version: 1.8.24
|
128
129
|
signing_key:
|
129
130
|
specification_version: 3
|
130
131
|
summary: Simple Hash/Array to XML generation
|
@@ -132,6 +133,7 @@ test_files:
|
|
132
133
|
- spec/lib/array_spec.rb
|
133
134
|
- spec/lib/hash_spec.rb
|
134
135
|
- spec/lib/node_spec.rb
|
136
|
+
- spec/lib/xml-fu_spec.rb
|
135
137
|
- spec/lib/xml_spec.rb
|
136
138
|
- spec/spec_helper.rb
|
137
139
|
- spec/xmlfu_spec.rb
|