gyoku 0.1.1 → 0.2.0
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/gyoku.gemspec +2 -1
- data/lib/gyoku/hash.rb +7 -5
- data/lib/gyoku/version.rb +1 -1
- data/lib/gyoku/xml_key.rb +5 -5
- data/spec/gyoku/hash_spec.rb +4 -0
- data/spec/gyoku/xml_key_spec.rb +10 -3
- metadata +27 -14
- data/autotest/discover.rb +0 -1
data/gyoku.gemspec
CHANGED
@@ -15,7 +15,8 @@ Gem::Specification.new do |s|
|
|
15
15
|
|
16
16
|
s.add_dependency "builder", ">= 2.1.2"
|
17
17
|
|
18
|
-
s.add_development_dependency "rspec", "2.
|
18
|
+
s.add_development_dependency "rspec", "~> 2.4.0"
|
19
|
+
s.add_development_dependency "autotest"
|
19
20
|
s.add_development_dependency "mocha", "~> 0.9.9"
|
20
21
|
|
21
22
|
s.files = `git ls-files`.split("\n")
|
data/lib/gyoku/hash.rb
CHANGED
@@ -14,14 +14,16 @@ module Gyoku
|
|
14
14
|
iterate_with_xml hash do |xml, key, attributes|
|
15
15
|
attrs = attributes[key] || {}
|
16
16
|
value = hash[key]
|
17
|
+
self_closing = key.to_s[-1, 1] == "/"
|
17
18
|
escape_xml = key.to_s[-1, 1] != "!"
|
18
19
|
key = to_xml_key(key)
|
19
20
|
|
20
|
-
case
|
21
|
-
when ::Array then xml << Array.to_xml(value, key, escape_xml, attrs)
|
22
|
-
when ::Hash then xml.tag!(key, attrs) { xml << Hash.to_xml(value) }
|
23
|
-
when
|
24
|
-
|
21
|
+
case
|
22
|
+
when ::Array === value then xml << Array.to_xml(value, key, escape_xml, attrs)
|
23
|
+
when ::Hash === value then xml.tag!(key, attrs) { xml << Hash.to_xml(value) }
|
24
|
+
when self_closing then xml.tag!(key, attrs)
|
25
|
+
when NilClass === value then xml.tag!(key, "xsi:nil" => "true")
|
26
|
+
else xml.tag!(key, attrs) { xml << to_xml_value(value, escape_xml) }
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
data/lib/gyoku/version.rb
CHANGED
data/lib/gyoku/xml_key.rb
CHANGED
@@ -6,16 +6,16 @@ module Gyoku
|
|
6
6
|
# Converts a given +object+ to an XML key.
|
7
7
|
def to_xml_key(key)
|
8
8
|
case key
|
9
|
-
when Symbol then
|
10
|
-
else
|
9
|
+
when Symbol then chop_special_characters(key.to_s).lower_camelcase
|
10
|
+
else chop_special_characters(key.to_s)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
-
# Chops
|
17
|
-
def
|
18
|
-
string[-1, 1]
|
16
|
+
# Chops special characters from the end of a given +string+.
|
17
|
+
def chop_special_characters(string)
|
18
|
+
["!", "/"].include?(string[-1, 1]) ? string.chop : string
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
data/spec/gyoku/hash_spec.rb
CHANGED
@@ -62,6 +62,10 @@ describe Gyoku::Hash do
|
|
62
62
|
to_xml(:some => nil).should == '<some xsi:nil="true"/>'
|
63
63
|
end
|
64
64
|
|
65
|
+
it "should create self-closing tags for Hash keys ending with a forward slash" do
|
66
|
+
to_xml("self-closing/" => nil).should == '<self-closing/>'
|
67
|
+
end
|
68
|
+
|
65
69
|
it "should call to_s on any other Object" do
|
66
70
|
[666, true, false].each do |object|
|
67
71
|
to_xml(:some => object).should == "<some>#{object}</some>"
|
data/spec/gyoku/xml_key_spec.rb
CHANGED
@@ -4,12 +4,19 @@ describe Gyoku::XMLKey do
|
|
4
4
|
include Gyoku::XMLKey
|
5
5
|
|
6
6
|
describe "#to_xml_key" do
|
7
|
-
it "
|
8
|
-
to_xml_key("value").should == "value"
|
7
|
+
it "should remove exclamation marks from the end of a String" do
|
9
8
|
to_xml_key("value!").should == "value"
|
10
9
|
end
|
11
10
|
|
12
|
-
it "
|
11
|
+
it "should remove forward slashes from the end of a String" do
|
12
|
+
to_xml_key("self-closing/").should == "self-closing"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should not convert snake_case Strings" do
|
16
|
+
to_xml_key("lower_camel_case").should == "lower_camel_case"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should convert snake_case Symbols to lowerCamelCase Strings" do
|
13
20
|
to_xml_key(:lower_camel_case).should == "lowerCamelCase"
|
14
21
|
to_xml_key(:lower_camel_case!).should == "lowerCamelCase"
|
15
22
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gyoku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Daniel Harrington
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-08 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -40,20 +40,34 @@ dependencies:
|
|
40
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 31
|
46
46
|
segments:
|
47
47
|
- 2
|
48
|
+
- 4
|
48
49
|
- 0
|
49
|
-
|
50
|
-
version: 2.0.0
|
50
|
+
version: 2.4.0
|
51
51
|
type: :development
|
52
52
|
version_requirements: *id002
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
54
|
+
name: autotest
|
55
55
|
prerelease: false
|
56
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
65
|
+
type: :development
|
66
|
+
version_requirements: *id003
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: mocha
|
69
|
+
prerelease: false
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
57
71
|
none: false
|
58
72
|
requirements:
|
59
73
|
- - ~>
|
@@ -65,7 +79,7 @@ dependencies:
|
|
65
79
|
- 9
|
66
80
|
version: 0.9.9
|
67
81
|
type: :development
|
68
|
-
version_requirements: *
|
82
|
+
version_requirements: *id004
|
69
83
|
description: Gyoku converts Ruby Hashes to XML
|
70
84
|
email: me@rubiii.com
|
71
85
|
executables: []
|
@@ -81,7 +95,6 @@ files:
|
|
81
95
|
- LICENSE
|
82
96
|
- README.md
|
83
97
|
- Rakefile
|
84
|
-
- autotest/discover.rb
|
85
98
|
- gyoku.gemspec
|
86
99
|
- lib/gyoku.rb
|
87
100
|
- lib/gyoku/array.rb
|
@@ -127,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
140
|
requirements: []
|
128
141
|
|
129
142
|
rubyforge_project: gyoku
|
130
|
-
rubygems_version: 1.
|
143
|
+
rubygems_version: 1.4.1
|
131
144
|
signing_key:
|
132
145
|
specification_version: 3
|
133
146
|
summary: Converts Ruby Hashes to XML
|
data/autotest/discover.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Autotest.add_discovery { "rspec2" }
|