in_json 0.0.2 → 0.0.3
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/VERSION +1 -1
- data/in_json.gemspec +3 -4
- data/lib/in_json.rb +14 -3
- data/spec/in_json_spec.rb +28 -0
- metadata +34 -34
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/in_json.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{in_json}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Henry Hsu"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-23}
|
13
13
|
s.description = %q{JSON serialization for Rails. Straight-forward attributes. Only serialize what you want. Optimally obeys eager-loaded associations}
|
14
14
|
s.email = %q{henry.hsu@photomugs.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
s.homepage = %q{http://github.com/hsume2/in_json}
|
35
35
|
s.licenses = ["MIT"]
|
36
36
|
s.require_paths = ["lib"]
|
37
|
-
s.rubygems_version = %q{1.
|
37
|
+
s.rubygems_version = %q{1.5.0}
|
38
38
|
s.summary = %q{Optimally straight-forward JSON serialization for Rails}
|
39
39
|
s.test_files = [
|
40
40
|
"spec/in_json_spec.rb",
|
@@ -42,7 +42,6 @@ Gem::Specification.new do |s|
|
|
42
42
|
]
|
43
43
|
|
44
44
|
if s.respond_to? :specification_version then
|
45
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
45
|
s.specification_version = 3
|
47
46
|
|
48
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
data/lib/in_json.rb
CHANGED
@@ -80,16 +80,27 @@ module InJson
|
|
80
80
|
|
81
81
|
protected
|
82
82
|
|
83
|
+
# TODO move precedence to doc
|
83
84
|
def in_json_definition(name, injected_definition)
|
84
85
|
definitions = self.class.read_inheritable_attribute(:in_json_definitions)
|
86
|
+
|
87
|
+
# Try nested first (if I am nested)
|
88
|
+
return injected_definition if injected_definition.kind_of?(Hash)
|
89
|
+
|
90
|
+
# Try named second
|
91
|
+
injected_definition.kind_of?(Symbol) && definitions && result = definitions[injected_definition]
|
92
|
+
return result if result
|
93
|
+
|
94
|
+
# Try thread third
|
85
95
|
thread_definition = Thread.current[:in_json_definition]
|
86
96
|
thread_definition && definitions && result = definitions[thread_definition]
|
87
97
|
return result if result # *yuck*
|
88
|
-
|
89
|
-
|
90
|
-
return injected_definition if injected_definition.kind_of?(Hash)
|
98
|
+
|
99
|
+
# Try given definitions fourth
|
91
100
|
definitions && result = definitions[name]
|
92
101
|
return result if result
|
102
|
+
|
103
|
+
# Try default last
|
93
104
|
return definitions && definitions[:default]
|
94
105
|
end
|
95
106
|
end
|
data/spec/in_json_spec.rb
CHANGED
@@ -48,6 +48,15 @@ class User < ActiveRecord::Base
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
in_json(:with_posts_and_comments_nested) do
|
52
|
+
posts do
|
53
|
+
title
|
54
|
+
comments do
|
55
|
+
content
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
51
60
|
in_json(:with_posts_and_comments_named) do
|
52
61
|
posts do
|
53
62
|
title
|
@@ -104,6 +113,14 @@ class Comment < ActiveRecord::Base
|
|
104
113
|
in_json(:only_approved) do
|
105
114
|
approved
|
106
115
|
end
|
116
|
+
|
117
|
+
in_json(:with_posts_and_comments_nested) do
|
118
|
+
approved
|
119
|
+
end
|
120
|
+
|
121
|
+
in_json(:with_posts_and_comments_named) do # Just to counter-act collission
|
122
|
+
content
|
123
|
+
end
|
107
124
|
end
|
108
125
|
|
109
126
|
class Review < ActiveRecord::Base
|
@@ -184,6 +201,17 @@ describe InJson do
|
|
184
201
|
}
|
185
202
|
end
|
186
203
|
|
204
|
+
it "should return model in json with posts and comments nested via Thread" do
|
205
|
+
InJson.with(:with_posts_and_comments_nested) do
|
206
|
+
@user.in_json.should == {
|
207
|
+
:posts => [
|
208
|
+
{ :title => 'Hello World!', :comments=>[{:content=>"Great blog!"}] },
|
209
|
+
{ :title => 'Hello World!', :comments=>[] }
|
210
|
+
]
|
211
|
+
}
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
187
215
|
it "should return model in json with posts and comments named" do
|
188
216
|
@user.in_json(:with_posts_and_comments_named).should == {
|
189
217
|
:posts => [
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: in_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Henry Hsu
|
@@ -15,12 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-23 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
|
-
type: :runtime
|
24
22
|
name: activerecord
|
25
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
24
|
none: false
|
@@ -33,10 +31,10 @@ dependencies:
|
|
33
31
|
- 3
|
34
32
|
- 8
|
35
33
|
version: 2.3.8
|
36
|
-
requirement: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
34
|
prerelease: false
|
39
35
|
type: :runtime
|
36
|
+
requirement: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
40
38
|
name: activesupport
|
41
39
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
@@ -49,10 +47,10 @@ dependencies:
|
|
49
47
|
- 3
|
50
48
|
- 8
|
51
49
|
version: 2.3.8
|
52
|
-
requirement: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
50
|
prerelease: false
|
55
51
|
type: :runtime
|
52
|
+
requirement: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
56
54
|
name: json
|
57
55
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
58
56
|
none: false
|
@@ -63,10 +61,10 @@ dependencies:
|
|
63
61
|
segments:
|
64
62
|
- 0
|
65
63
|
version: "0"
|
64
|
+
prerelease: false
|
65
|
+
type: :runtime
|
66
66
|
requirement: *id003
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
|
-
prerelease: false
|
69
|
-
type: :development
|
70
68
|
name: rspec
|
71
69
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
72
70
|
none: false
|
@@ -79,10 +77,10 @@ dependencies:
|
|
79
77
|
- 3
|
80
78
|
- 0
|
81
79
|
version: 2.3.0
|
82
|
-
requirement: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
80
|
prerelease: false
|
85
81
|
type: :development
|
82
|
+
requirement: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
86
84
|
name: yard
|
87
85
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
88
86
|
none: false
|
@@ -95,10 +93,10 @@ dependencies:
|
|
95
93
|
- 6
|
96
94
|
- 0
|
97
95
|
version: 0.6.0
|
98
|
-
requirement: *id005
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
96
|
prerelease: false
|
101
97
|
type: :development
|
98
|
+
requirement: *id005
|
99
|
+
- !ruby/object:Gem::Dependency
|
102
100
|
name: bundler
|
103
101
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
104
102
|
none: false
|
@@ -111,10 +109,10 @@ dependencies:
|
|
111
109
|
- 0
|
112
110
|
- 0
|
113
111
|
version: 1.0.0
|
114
|
-
requirement: *id006
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
112
|
prerelease: false
|
117
113
|
type: :development
|
114
|
+
requirement: *id006
|
115
|
+
- !ruby/object:Gem::Dependency
|
118
116
|
name: jeweler
|
119
117
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
120
118
|
none: false
|
@@ -127,10 +125,10 @@ dependencies:
|
|
127
125
|
- 5
|
128
126
|
- 2
|
129
127
|
version: 1.5.2
|
130
|
-
requirement: *id007
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
128
|
prerelease: false
|
133
129
|
type: :development
|
130
|
+
requirement: *id007
|
131
|
+
- !ruby/object:Gem::Dependency
|
134
132
|
name: rcov
|
135
133
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
136
134
|
none: false
|
@@ -141,10 +139,10 @@ dependencies:
|
|
141
139
|
segments:
|
142
140
|
- 0
|
143
141
|
version: "0"
|
144
|
-
requirement: *id008
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
142
|
prerelease: false
|
147
143
|
type: :development
|
144
|
+
requirement: *id008
|
145
|
+
- !ruby/object:Gem::Dependency
|
148
146
|
name: reek
|
149
147
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
150
148
|
none: false
|
@@ -157,10 +155,10 @@ dependencies:
|
|
157
155
|
- 2
|
158
156
|
- 8
|
159
157
|
version: 1.2.8
|
160
|
-
requirement: *id009
|
161
|
-
- !ruby/object:Gem::Dependency
|
162
158
|
prerelease: false
|
163
159
|
type: :development
|
160
|
+
requirement: *id009
|
161
|
+
- !ruby/object:Gem::Dependency
|
164
162
|
name: roodi
|
165
163
|
version_requirements: &id010 !ruby/object:Gem::Requirement
|
166
164
|
none: false
|
@@ -173,10 +171,10 @@ dependencies:
|
|
173
171
|
- 1
|
174
172
|
- 0
|
175
173
|
version: 2.1.0
|
176
|
-
requirement: *id010
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
174
|
prerelease: false
|
179
175
|
type: :development
|
176
|
+
requirement: *id010
|
177
|
+
- !ruby/object:Gem::Dependency
|
180
178
|
name: autotest
|
181
179
|
version_requirements: &id011 !ruby/object:Gem::Requirement
|
182
180
|
none: false
|
@@ -187,10 +185,10 @@ dependencies:
|
|
187
185
|
segments:
|
188
186
|
- 0
|
189
187
|
version: "0"
|
190
|
-
requirement: *id011
|
191
|
-
- !ruby/object:Gem::Dependency
|
192
188
|
prerelease: false
|
193
189
|
type: :development
|
190
|
+
requirement: *id011
|
191
|
+
- !ruby/object:Gem::Dependency
|
194
192
|
name: sqlite3
|
195
193
|
version_requirements: &id012 !ruby/object:Gem::Requirement
|
196
194
|
none: false
|
@@ -201,10 +199,10 @@ dependencies:
|
|
201
199
|
segments:
|
202
200
|
- 0
|
203
201
|
version: "0"
|
204
|
-
requirement: *id012
|
205
|
-
- !ruby/object:Gem::Dependency
|
206
202
|
prerelease: false
|
207
203
|
type: :development
|
204
|
+
requirement: *id012
|
205
|
+
- !ruby/object:Gem::Dependency
|
208
206
|
name: rspec-rails
|
209
207
|
version_requirements: &id013 !ruby/object:Gem::Requirement
|
210
208
|
none: false
|
@@ -215,10 +213,10 @@ dependencies:
|
|
215
213
|
segments:
|
216
214
|
- 0
|
217
215
|
version: "0"
|
218
|
-
requirement: *id013
|
219
|
-
- !ruby/object:Gem::Dependency
|
220
216
|
prerelease: false
|
221
217
|
type: :development
|
218
|
+
requirement: *id013
|
219
|
+
- !ruby/object:Gem::Dependency
|
222
220
|
name: database_cleaner
|
223
221
|
version_requirements: &id014 !ruby/object:Gem::Requirement
|
224
222
|
none: false
|
@@ -229,6 +227,8 @@ dependencies:
|
|
229
227
|
segments:
|
230
228
|
- 0
|
231
229
|
version: "0"
|
230
|
+
prerelease: false
|
231
|
+
type: :development
|
232
232
|
requirement: *id014
|
233
233
|
description: JSON serialization for Rails. Straight-forward attributes. Only serialize what you want. Optimally obeys eager-loaded associations
|
234
234
|
email: henry.hsu@photomugs.com
|
@@ -283,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
283
283
|
requirements: []
|
284
284
|
|
285
285
|
rubyforge_project:
|
286
|
-
rubygems_version: 1.
|
286
|
+
rubygems_version: 1.5.0
|
287
287
|
signing_key:
|
288
288
|
specification_version: 3
|
289
289
|
summary: Optimally straight-forward JSON serialization for Rails
|