representative 0.3.4 → 0.3.5
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.
@@ -5,8 +5,10 @@ module Representative
|
|
5
5
|
class AbstractXml < Base
|
6
6
|
|
7
7
|
def initialize(subject = nil, options = {})
|
8
|
+
unless options.has_key?(:naming_strategy)
|
9
|
+
options = options.merge!(:naming_strategy => :dasherize)
|
10
|
+
end
|
8
11
|
super(subject, options)
|
9
|
-
@naming_strategy = options[:naming_strategy] || :dasherize
|
10
12
|
end
|
11
13
|
|
12
14
|
# Generate an element.
|
@@ -120,22 +122,6 @@ module Representative
|
|
120
122
|
|
121
123
|
private
|
122
124
|
|
123
|
-
attr_reader :naming_strategy
|
124
|
-
|
125
|
-
def format_name(name)
|
126
|
-
name = name.to_s
|
127
|
-
case naming_strategy
|
128
|
-
when :camelcase
|
129
|
-
name.camelcase(:lower)
|
130
|
-
when :dasherize
|
131
|
-
name.dasherize
|
132
|
-
when Symbol
|
133
|
-
name.send(naming_strategy)
|
134
|
-
else
|
135
|
-
naming_strategy.to_proc.call(name)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
125
|
def resolve_attributes(attributes)
|
140
126
|
if attributes
|
141
127
|
attributes.inject({}) do |resolved, (name, value_generator)|
|
data/lib/representative/base.rb
CHANGED
@@ -7,7 +7,7 @@ module Representative
|
|
7
7
|
def initialize(subject = nil, options = {})
|
8
8
|
@subjects = [subject]
|
9
9
|
@inspector = options[:inspector] || ObjectInspector.new
|
10
|
-
@naming_strategy = options[:naming_strategy]
|
10
|
+
@naming_strategy = options[:naming_strategy] || :plain
|
11
11
|
end
|
12
12
|
|
13
13
|
# Return the current "subject" of representation.
|
@@ -50,6 +50,20 @@ module Representative
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
def format_name(name)
|
54
|
+
name = name.to_s
|
55
|
+
case @naming_strategy
|
56
|
+
when :plain
|
57
|
+
name
|
58
|
+
when :camelcase, :camelCase
|
59
|
+
name.camelcase(:lower)
|
60
|
+
when Symbol
|
61
|
+
name.send(@naming_strategy)
|
62
|
+
else
|
63
|
+
@naming_strategy.to_proc.call(name)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
53
67
|
end
|
54
68
|
|
55
|
-
end
|
69
|
+
end
|
data/lib/representative/json.rb
CHANGED
@@ -4,8 +4,8 @@ require "representative/json"
|
|
4
4
|
|
5
5
|
describe Representative::Json do
|
6
6
|
|
7
|
-
def r
|
8
|
-
@representative ||= Representative::Json.new(@subject)
|
7
|
+
def r(options = {})
|
8
|
+
@representative ||= Representative::Json.new(@subject, options)
|
9
9
|
end
|
10
10
|
|
11
11
|
def resulting_json
|
@@ -319,4 +319,37 @@ describe Representative::Json do
|
|
319
319
|
|
320
320
|
end
|
321
321
|
|
322
|
+
context "by default" do
|
323
|
+
|
324
|
+
it "does not tranform element names" do
|
325
|
+
r.element :user, Object.new do
|
326
|
+
r.element :full_name, "Fred Bloggs"
|
327
|
+
end
|
328
|
+
resulting_json.should == undent(<<-JSON)
|
329
|
+
{
|
330
|
+
"full_name": "Fred Bloggs"
|
331
|
+
}
|
332
|
+
JSON
|
333
|
+
end
|
334
|
+
|
335
|
+
end
|
336
|
+
|
337
|
+
context "with naming_strategy :camelcase" do
|
338
|
+
|
339
|
+
it "generates camelCased element and attribute names" do
|
340
|
+
@user = OpenStruct.new(:full_name => "Fred Bloggs")
|
341
|
+
r(:naming_strategy => :camelcase).element :user, @user do
|
342
|
+
r.attribute :alt_url, "http://xyz.com"
|
343
|
+
r.element :full_name
|
344
|
+
end
|
345
|
+
resulting_json.should == undent(<<-JSON)
|
346
|
+
{
|
347
|
+
"@altUrl": "http://xyz.com",
|
348
|
+
"fullName": "Fred Bloggs"
|
349
|
+
}
|
350
|
+
JSON
|
351
|
+
end
|
352
|
+
|
353
|
+
end
|
354
|
+
|
322
355
|
end
|
@@ -7,14 +7,15 @@ shared_examples_for "an XML Representative" do
|
|
7
7
|
describe "for some 'subject'" do
|
8
8
|
|
9
9
|
before do
|
10
|
-
@subject = OpenStruct.new(
|
10
|
+
@subject = OpenStruct.new(
|
11
|
+
:name => "Fred",
|
12
|
+
:full_name => "Fredrick",
|
13
|
+
:width => 200,
|
14
|
+
:vehicle => OpenStruct.new(:year => "1959", :make => "Chevrolet")
|
15
|
+
)
|
11
16
|
end
|
12
17
|
|
13
18
|
describe "#element" do
|
14
|
-
|
15
|
-
before do
|
16
|
-
@subject.full_name = "Fredrick"
|
17
|
-
end
|
18
19
|
|
19
20
|
it "generates an element with content extracted from the subject" do
|
20
21
|
r.element :name
|
@@ -26,25 +27,6 @@ shared_examples_for "an XML Representative" do
|
|
26
27
|
resulting_xml.should == %(<full-name>Fredrick</full-name>)
|
27
28
|
end
|
28
29
|
|
29
|
-
context "with naming_strategy :camelcase" do
|
30
|
-
|
31
|
-
it "applies the naming strategy to produce element names" do
|
32
|
-
r(:naming_strategy => :camelcase).element :full_name
|
33
|
-
resulting_xml.should == %(<fullName>Fredrick</fullName>)
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
context "with a custom naming_strategy" do
|
39
|
-
|
40
|
-
it "applies the naming strategy to produce element names" do
|
41
|
-
biff = lambda { |name| name.upcase }
|
42
|
-
r(:naming_strategy => biff).element :full_name
|
43
|
-
resulting_xml.should == %(<FULL_NAME>Fredrick</FULL_NAME>)
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
30
|
describe "with attributes" do
|
49
31
|
|
50
32
|
it "generates attributes on the element" do
|
@@ -293,9 +275,37 @@ shared_examples_for "an XML Representative" do
|
|
293
275
|
resulting_xml.should ==
|
294
276
|
%(<vehicle><!-- Year of manufacture --><year>1959</year></vehicle>)
|
295
277
|
end
|
296
|
-
|
278
|
+
|
297
279
|
end
|
298
|
-
|
280
|
+
|
281
|
+
context "with naming_strategy :camelcase" do
|
282
|
+
|
283
|
+
it "generates camelCased element and attribute names" do
|
284
|
+
r(:naming_strategy => :camelcase).element :full_name, :foo_bar => 5
|
285
|
+
resulting_xml.should == %(<fullName fooBar="5">Fredrick</fullName>)
|
286
|
+
end
|
287
|
+
|
288
|
+
end
|
289
|
+
|
290
|
+
context "with a custom naming_strategy" do
|
291
|
+
|
292
|
+
it "generates suitably transformed names" do
|
293
|
+
biff = lambda { |name| name.upcase }
|
294
|
+
r(:naming_strategy => biff).element :full_name
|
295
|
+
resulting_xml.should == %(<FULL_NAME>Fredrick</FULL_NAME>)
|
296
|
+
end
|
297
|
+
|
298
|
+
end
|
299
|
+
|
300
|
+
context "with no naming_strategy" do
|
301
|
+
|
302
|
+
it "uses raw names" do
|
303
|
+
r(:naming_strategy => nil).element :full_name
|
304
|
+
resulting_xml.should == %(<full_name>Fredrick</full_name>)
|
305
|
+
end
|
306
|
+
|
307
|
+
end
|
308
|
+
|
299
309
|
end
|
300
310
|
|
301
311
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: representative
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.3.
|
5
|
+
version: 0.3.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mike Williams
|
@@ -14,7 +14,6 @@ date: 2011-05-26 00:00:00 Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
prerelease: false
|
18
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
18
|
none: false
|
20
19
|
requirements:
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
- !ruby/object:Gem::Version
|
23
22
|
version: 2.2.2
|
24
23
|
type: :runtime
|
24
|
+
prerelease: false
|
25
25
|
version_requirements: *id001
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: i18n
|
28
|
-
prerelease: false
|
29
28
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
29
|
none: false
|
31
30
|
requirements:
|
@@ -33,10 +32,10 @@ dependencies:
|
|
33
32
|
- !ruby/object:Gem::Version
|
34
33
|
version: 0.4.1
|
35
34
|
type: :runtime
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: *id002
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: builder
|
39
|
-
prerelease: false
|
40
39
|
requirement: &id003 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
@@ -44,10 +43,10 @@ dependencies:
|
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: 2.1.2
|
46
45
|
type: :runtime
|
46
|
+
prerelease: false
|
47
47
|
version_requirements: *id003
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json
|
50
|
-
prerelease: false
|
51
50
|
requirement: &id004 !ruby/object:Gem::Requirement
|
52
51
|
none: false
|
53
52
|
requirements:
|
@@ -55,10 +54,10 @@ dependencies:
|
|
55
54
|
- !ruby/object:Gem::Version
|
56
55
|
version: 1.4.5
|
57
56
|
type: :runtime
|
57
|
+
prerelease: false
|
58
58
|
version_requirements: *id004
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rake
|
61
|
-
prerelease: false
|
62
61
|
requirement: &id005 !ruby/object:Gem::Requirement
|
63
62
|
none: false
|
64
63
|
requirements:
|
@@ -66,10 +65,10 @@ dependencies:
|
|
66
65
|
- !ruby/object:Gem::Version
|
67
66
|
version: 0.8.7
|
68
67
|
type: :development
|
68
|
+
prerelease: false
|
69
69
|
version_requirements: *id005
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rspec
|
72
|
-
prerelease: false
|
73
72
|
requirement: &id006 !ruby/object:Gem::Requirement
|
74
73
|
none: false
|
75
74
|
requirements:
|
@@ -77,10 +76,10 @@ dependencies:
|
|
77
76
|
- !ruby/object:Gem::Version
|
78
77
|
version: 2.5.0
|
79
78
|
type: :development
|
79
|
+
prerelease: false
|
80
80
|
version_requirements: *id006
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: tilt
|
83
|
-
prerelease: false
|
84
83
|
requirement: &id007 !ruby/object:Gem::Requirement
|
85
84
|
none: false
|
86
85
|
requirements:
|
@@ -88,10 +87,10 @@ dependencies:
|
|
88
87
|
- !ruby/object:Gem::Version
|
89
88
|
version: "0.9"
|
90
89
|
type: :development
|
90
|
+
prerelease: false
|
91
91
|
version_requirements: *id007
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: nokogiri
|
94
|
-
prerelease: false
|
95
94
|
requirement: &id008 !ruby/object:Gem::Requirement
|
96
95
|
none: false
|
97
96
|
requirements:
|
@@ -99,10 +98,10 @@ dependencies:
|
|
99
98
|
- !ruby/object:Gem::Version
|
100
99
|
version: 1.4.2
|
101
100
|
type: :development
|
101
|
+
prerelease: false
|
102
102
|
version_requirements: *id008
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: diff-lcs
|
105
|
-
prerelease: false
|
106
105
|
requirement: &id009 !ruby/object:Gem::Requirement
|
107
106
|
none: false
|
108
107
|
requirements:
|
@@ -110,6 +109,7 @@ dependencies:
|
|
110
109
|
- !ruby/object:Gem::Version
|
111
110
|
version: "0"
|
112
111
|
type: :development
|
112
|
+
prerelease: false
|
113
113
|
version_requirements: *id009
|
114
114
|
description:
|
115
115
|
email: mdub@dogbiscuit.org
|
@@ -154,12 +154,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
154
154
|
requirements:
|
155
155
|
- - ">="
|
156
156
|
- !ruby/object:Gem::Version
|
157
|
+
hash: 4481095583233401892
|
158
|
+
segments:
|
159
|
+
- 0
|
157
160
|
version: "0"
|
158
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
162
|
none: false
|
160
163
|
requirements:
|
161
164
|
- - ">="
|
162
165
|
- !ruby/object:Gem::Version
|
166
|
+
hash: 4481095583233401892
|
167
|
+
segments:
|
168
|
+
- 0
|
163
169
|
version: "0"
|
164
170
|
requirements: []
|
165
171
|
|
@@ -176,4 +182,3 @@ test_files:
|
|
176
182
|
- spec/representative/xml_spec.rb
|
177
183
|
- spec/spec_helper.rb
|
178
184
|
- Rakefile
|
179
|
-
has_rdoc:
|