active_model_serializers 0.6.0 → 0.7.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.
@@ -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