active_model_serializers 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,182 @@
1
+ class Model
2
+ def initialize(hash={})
3
+ @attributes = hash
4
+ end
5
+
6
+ def read_attribute_for_serialization(name)
7
+ @attributes[name]
8
+ end
9
+
10
+ def as_json(*)
11
+ { :model => "Model" }
12
+ end
13
+ end
14
+
15
+ class User
16
+ include ActiveModel::SerializerSupport
17
+
18
+ attr_accessor :superuser
19
+
20
+ def initialize(hash={})
21
+ @attributes = hash.merge(:first_name => "Jose", :last_name => "Valim", :password => "oh noes yugive my password")
22
+ end
23
+
24
+ def read_attribute_for_serialization(name)
25
+ @attributes[name]
26
+ end
27
+
28
+ def super_user?
29
+ @superuser
30
+ end
31
+ end
32
+
33
+ class Post < Model
34
+ def initialize(attributes)
35
+ super(attributes)
36
+ self.comments ||= []
37
+ self.comments_disabled = false
38
+ self.author = nil
39
+ end
40
+
41
+ attr_accessor :comments, :comments_disabled, :author
42
+ def active_model_serializer; PostSerializer; end
43
+ end
44
+
45
+ class Comment < Model
46
+ def active_model_serializer; CommentSerializer; end
47
+ end
48
+
49
+ class UserSerializer < ActiveModel::Serializer
50
+ attributes :first_name, :last_name
51
+
52
+ def serializable_hash
53
+ attributes.merge(:ok => true).merge(options[:scope])
54
+ end
55
+ end
56
+
57
+ class UserAttributesWithKeySerializer < ActiveModel::Serializer
58
+ attributes :first_name => :f_name, :last_name => :l_name
59
+
60
+ def serializable_hash
61
+ attributes.merge(:ok => true).merge(options[:scope])
62
+ end
63
+ end
64
+
65
+ class UserAttributesWithSomeKeySerializer < ActiveModel::Serializer
66
+ attributes :first_name, :last_name => :l_name
67
+
68
+ def serializable_hash
69
+ attributes.merge(:ok => true).merge(options[:scope])
70
+ end
71
+ end
72
+
73
+ class DefaultUserSerializer < ActiveModel::Serializer
74
+ attributes :first_name, :last_name
75
+ end
76
+
77
+ class MyUserSerializer < ActiveModel::Serializer
78
+ attributes :first_name, :last_name
79
+
80
+ def serializable_hash
81
+ hash = attributes
82
+ hash = hash.merge(:super_user => true) if object.super_user?
83
+ hash
84
+ end
85
+ end
86
+
87
+ class CommentSerializer
88
+ def initialize(comment, options={})
89
+ @object = comment
90
+ end
91
+
92
+ attr_reader :object
93
+
94
+ def serializable_hash
95
+ { :title => @object.read_attribute_for_serialization(:title) }
96
+ end
97
+
98
+ def as_json(options=nil)
99
+ options ||= {}
100
+ if options[:root] == false
101
+ serializable_hash
102
+ else
103
+ { :comment => serializable_hash }
104
+ end
105
+ end
106
+ end
107
+
108
+ class PostSerializer < ActiveModel::Serializer
109
+ attributes :title, :body
110
+ has_many :comments, :serializer => CommentSerializer
111
+ end
112
+
113
+ class PostWithConditionalCommentsSerializer < ActiveModel::Serializer
114
+ root :post
115
+ attributes :title, :body
116
+ has_many :comments, :serializer => CommentSerializer
117
+
118
+ def include_associations!
119
+ include! :comments unless object.comments_disabled
120
+ end
121
+ end
122
+
123
+ class PostWithMultipleConditionalsSerializer < ActiveModel::Serializer
124
+ root :post
125
+ attributes :title, :body, :author
126
+ has_many :comments, :serializer => CommentSerializer
127
+
128
+ def include_comments?
129
+ !object.comments_disabled
130
+ end
131
+
132
+ def include_author?
133
+ scope.super_user?
134
+ end
135
+ end
136
+
137
+ class Blog < Model
138
+ attr_accessor :author
139
+ end
140
+
141
+ class AuthorSerializer < ActiveModel::Serializer
142
+ attributes :first_name, :last_name
143
+ end
144
+
145
+ class BlogSerializer < ActiveModel::Serializer
146
+ has_one :author, :serializer => AuthorSerializer
147
+ end
148
+
149
+ class CustomPostSerializer < ActiveModel::Serializer
150
+ attributes :title
151
+ end
152
+
153
+ class CustomBlog < Blog
154
+ attr_accessor :public_posts, :public_user
155
+ end
156
+
157
+ class CustomBlogSerializer < ActiveModel::Serializer
158
+ has_many :public_posts, :key => :posts, :serializer => PostSerializer
159
+ has_one :public_user, :key => :user, :serializer => UserSerializer
160
+ end
161
+
162
+ class SomeSerializer < ActiveModel::Serializer
163
+ attributes :some
164
+ end
165
+
166
+ class SomeObject < Struct.new(:some)
167
+ end
168
+
169
+ # Set up some classes for polymorphic testing
170
+ class Attachment < Model
171
+ def attachable
172
+ @attributes[:attachable]
173
+ end
174
+
175
+ def readable
176
+ @attributes[:readable]
177
+ end
178
+
179
+ def edible
180
+ @attributes[:edible]
181
+ end
182
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - José Valim
@@ -10,52 +9,64 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-10-22 00:00:00.000000000 Z
12
+ date: 2013-03-06 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activemodel
17
- requirement: &2152794880 !ruby/object:Gem::Requirement
18
- none: false
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  requirements:
20
- - - ! '>='
18
+ - - '>='
21
19
  - !ruby/object:Gem::Version
22
20
  version: '3.0'
23
21
  type: :runtime
24
22
  prerelease: false
25
- version_requirements: *2152794880
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '3.0'
26
28
  - !ruby/object:Gem::Dependency
27
29
  name: rails
28
- requirement: &2152793920 !ruby/object:Gem::Requirement
29
- none: false
30
+ requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ! '>='
32
+ - - '>='
32
33
  - !ruby/object:Gem::Version
33
34
  version: '3.0'
34
35
  type: :development
35
36
  prerelease: false
36
- version_requirements: *2152793920
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '3.0'
37
42
  - !ruby/object:Gem::Dependency
38
43
  name: pry
39
- requirement: &2152793500 !ruby/object:Gem::Requirement
40
- none: false
44
+ requirement: !ruby/object:Gem::Requirement
41
45
  requirements:
42
- - - ! '>='
46
+ - - '>='
43
47
  - !ruby/object:Gem::Version
44
48
  version: '0'
45
49
  type: :development
46
50
  prerelease: false
47
- version_requirements: *2152793500
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
48
56
  - !ruby/object:Gem::Dependency
49
57
  name: simplecov
50
- requirement: &2152793040 !ruby/object:Gem::Requirement
51
- none: false
58
+ requirement: !ruby/object:Gem::Requirement
52
59
  requirements:
53
- - - ! '>='
60
+ - - '>='
54
61
  - !ruby/object:Gem::Version
55
62
  version: '0'
56
63
  type: :development
57
64
  prerelease: false
58
- version_requirements: *2152793040
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
59
70
  description: Making it easy to serialize models for client-side use
60
71
  email:
61
72
  - jose.valim@gmail.com
@@ -68,61 +79,63 @@ files:
68
79
  - .travis.yml
69
80
  - DESIGN.textile
70
81
  - Gemfile
82
+ - Gemfile.edge
71
83
  - MIT-LICENSE.txt
72
84
  - README.md
73
85
  - RELEASE_NOTES.md
74
86
  - Rakefile
75
87
  - active_model_serializers.gemspec
76
88
  - cruft.md
77
- - gemfiles/Gemfile.edge-rails
78
89
  - lib/action_controller/serialization.rb
79
90
  - lib/active_model/array_serializer.rb
80
- - lib/active_model/ordered_set.rb
81
91
  - lib/active_model/serializer.rb
92
+ - lib/active_model/serializer/associations.rb
82
93
  - lib/active_model/serializers/version.rb
83
94
  - lib/active_model_serializers.rb
84
95
  - lib/generators/resource_override.rb
85
96
  - lib/generators/serializer/USAGE
86
97
  - lib/generators/serializer/serializer_generator.rb
87
98
  - lib/generators/serializer/templates/serializer.rb
99
+ - test/array_serializer_test.rb
88
100
  - test/association_test.rb
89
101
  - test/generators_test.rb
90
102
  - test/no_serialization_scope_test.rb
91
103
  - test/serialization_test.rb
92
104
  - test/serializer_support_test.rb
93
105
  - test/serializer_test.rb
106
+ - test/test_fakes.rb
94
107
  - test/test_helper.rb
95
108
  homepage: https://github.com/josevalim/active_model_serializers
96
109
  licenses: []
110
+ metadata: {}
97
111
  post_install_message:
98
112
  rdoc_options: []
99
113
  require_paths:
100
114
  - lib
101
115
  required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
116
  requirements:
104
- - - ! '>='
117
+ - - '>='
105
118
  - !ruby/object:Gem::Version
106
119
  version: '0'
107
120
  required_rubygems_version: !ruby/object:Gem::Requirement
108
- none: false
109
121
  requirements:
110
- - - ! '>='
122
+ - - '>='
111
123
  - !ruby/object:Gem::Version
112
124
  version: '0'
113
125
  requirements: []
114
126
  rubyforge_project:
115
- rubygems_version: 1.8.15
127
+ rubygems_version: 2.0.0
116
128
  signing_key:
117
- specification_version: 3
129
+ specification_version: 4
118
130
  summary: Bringing consistency and object orientation to model serialization. Works
119
131
  great for client-side MVC frameworks!
120
132
  test_files:
133
+ - test/array_serializer_test.rb
121
134
  - test/association_test.rb
122
135
  - test/generators_test.rb
123
136
  - test/no_serialization_scope_test.rb
124
137
  - test/serialization_test.rb
125
138
  - test/serializer_support_test.rb
126
139
  - test/serializer_test.rb
140
+ - test/test_fakes.rb
127
141
  - test/test_helper.rb
128
- has_rdoc:
@@ -1,25 +0,0 @@
1
- module ActiveModel
2
- class OrderedSet
3
- def initialize(array)
4
- @array = array
5
- @hash = {}
6
-
7
- array.each do |item|
8
- @hash[item] = true
9
- end
10
- end
11
-
12
- def merge!(other)
13
- other.each do |item|
14
- next if @hash.key?(item)
15
-
16
- @hash[item] = true
17
- @array.push item
18
- end
19
- end
20
-
21
- def to_a
22
- @array
23
- end
24
- end
25
- end