active_serializer 0.1.0 → 0.1.1

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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c6e724544450ac4f3893b2749024b3df5b1b94b2
4
+ data.tar.gz: cc15ac049b78e10fa470a691fdad447bd4300a96
5
+ SHA512:
6
+ metadata.gz: 7aa8beb8c419ae20b5dc4ef9fbf10bb9685b4d5de5cbe63ee6e3af5e00ee08fd9a6e7c8befcc370ad2014cb9e8c6176547377a21199c22ab7d3b1c22788c7cac
7
+ data.tar.gz: 92cbfb349a5c6b3ebaf0fded01000b272571dca10db542dffef51b7513fa9ec5bff14fd3967015caa64a6df724bd7bd41b5308083c9812dedd7fe92c2d984aa8
data/Gemfile CHANGED
@@ -5,5 +5,5 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'rspec'
8
- gem 'debugger'
8
+ gem 'byebug'
9
9
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_serializer (0.1.0)
4
+ active_serializer (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -13,13 +13,11 @@ GEM
13
13
  thread_safe (~> 0.1)
14
14
  tzinfo (~> 0.3.37)
15
15
  atomic (1.1.14)
16
- columnize (0.3.6)
17
- debugger (1.6.2)
18
- columnize (>= 0.3.1)
19
- debugger-linecache (~> 1.2.0)
20
- debugger-ruby_core_source (~> 1.2.3)
16
+ byebug (3.1.2)
17
+ columnize (~> 0.8)
18
+ debugger-linecache (~> 1.2)
19
+ columnize (0.8.9)
21
20
  debugger-linecache (1.2.0)
22
- debugger-ruby_core_source (1.2.3)
23
21
  diff-lcs (1.2.4)
24
22
  i18n (0.6.5)
25
23
  minitest (4.7.5)
@@ -44,6 +42,6 @@ DEPENDENCIES
44
42
  active_serializer!
45
43
  activesupport
46
44
  bundler (~> 1.3)
47
- debugger
45
+ byebug
48
46
  rake
49
47
  rspec
@@ -13,6 +13,21 @@ class ActiveSerializer::SerializationRulesValidator
13
13
  ActiveSerializer::Support::ArgsValidator.is_symbol!(name, 'attributes')
14
14
  end
15
15
 
16
+ def serialize_collection(*attrs)
17
+ key = attrs[0]
18
+ object = attrs[1]
19
+ klass = attrs[2]
20
+ ActiveSerializer::Support::ArgsValidator.is_symbol!(key, 'collection name')
21
+ ActiveSerializer::Support::ArgsValidator.is_class!(klass, 'serializer class')
22
+ end
23
+
24
+ def serialize_entity(*attrs)
25
+ key = attrs[0]
26
+ klass = attrs[2]
27
+ ActiveSerializer::Support::ArgsValidator.is_symbol!(key, 'collection name')
28
+ ActiveSerializer::Support::ArgsValidator.is_class!(klass, 'serializer class')
29
+ end
30
+
16
31
  def attributes(*attrs)
17
32
  attrs.delete_at(-1)
18
33
  ActiveSerializer::Support::ArgsValidator.is_array_of_symbols!(attrs, 'attributes')
@@ -16,6 +16,19 @@ class ActiveSerializer::Serializers::HashSerializer
16
16
  set_value(name, value)
17
17
  end
18
18
 
19
+ def serialize_collection(name, objects, klass, *args)
20
+ raise ArgumentError, "You should provide serializer klass" if !klass
21
+ self.serialized_data[name] = []
22
+ objects.each do |object|
23
+ self.serialized_data[name] << klass.serialize(object, *args)
24
+ end
25
+ end
26
+
27
+ def serialize_entity(name, object, klass, *args)
28
+ raise ArgumentError, "You should provide serializer klass" if !klass
29
+ self.serialized_data[name] = klass.serialize(object, *args)
30
+ end
31
+
19
32
  def attributes(*serialized_data, &block)
20
33
  if !serialized_data.last.is_a?(Symbol)
21
34
  source_hash = serialized_data.delete_at(-1)
@@ -6,6 +6,19 @@ class ActiveSerializer::Serializers::ObjectSerializer
6
6
  @attrs = {}
7
7
  end
8
8
 
9
+ def serialize_collection(name, objects, klass, *args)
10
+ raise ArgumentError, "You should provide serializer klass" if !klass
11
+ self.attrs[name] = []
12
+ objects.each do |object|
13
+ self.attrs[name] << klass.serialize(object, *args)
14
+ end
15
+ end
16
+
17
+ def serialize_entity(name, object, klass, *args)
18
+ raise ArgumentError, "You should provide serializer klass" if !klass
19
+ self.attrs[name] = klass.serialize(object, *args)
20
+ end
21
+
9
22
  def namespace(name, &block)
10
23
  serializer = self.class.new(@object, @options)
11
24
  serializer.instance_exec(@object, &block)
@@ -6,6 +6,12 @@ module ActiveSerializer::Support::ArgsValidator
6
6
  end
7
7
  end
8
8
 
9
+ def is_class!(obj, obj_name)
10
+ unless obj.is_a?(Class)
11
+ raise ArgumentError, "#{obj_name} should be a Class"
12
+ end
13
+ end
14
+
9
15
  def is_array!(obj, obj_name)
10
16
  unless obj.is_a?(Array)
11
17
  raise ArgumentError, "#{obj_name} should be an Array"
@@ -1,3 +1,3 @@
1
1
  module ActiveSerializer
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,16 +2,27 @@ require 'spec_helper'
2
2
 
3
3
  module SerializableHashTest
4
4
  describe ActiveSerializer::SerializableHash do
5
+ class PhoneNumbersSerializer
6
+ include ActiveSerializer::SerializableHash
7
+
8
+ serialization_rules do |phone_numbers|
9
+ attributes :number
10
+ end
11
+ end
12
+
5
13
  class ContactSerializer
6
14
  include ActiveSerializer::SerializableHash
7
15
 
8
- serialization_rules do |contact, home_address, contact_emails|
16
+ serialization_rules do |contact, home_address, contact_emails, phone_numbers|
9
17
  attributes :first_name, :last_name, contact
10
18
 
11
19
  attribute :full_name do
12
20
  "#{contact[:first_name]} #{contact[:last_name]}"
13
21
  end
14
22
 
23
+ serialize_collection :phone_numbers, phone_numbers, PhoneNumbersSerializer
24
+ serialize_entity :phone_number, phone_numbers.first, PhoneNumbersSerializer
25
+
15
26
  resource :address, home_address do |address|
16
27
  attributes :country, :city, :street, address
17
28
  end
@@ -43,7 +54,13 @@ module SerializableHashTest
43
54
  street: 'Kosmonavton',
44
55
  }
45
56
 
46
- serialized_contact = ContactSerializer.serialize(contact, home_address, contact_emails)
57
+ phone_numbers = [
58
+ {
59
+ number: '123456'
60
+ }
61
+ ]
62
+
63
+ serialized_contact = ContactSerializer.serialize(contact, home_address, contact_emails, phone_numbers)
47
64
  serialized_contact.should == {
48
65
  first_name: "John",
49
66
  last_name: "Smith",
@@ -56,7 +73,15 @@ module SerializableHashTest
56
73
  emails: [
57
74
  { email: "test@test.com", type: "home" },
58
75
  { email: "test2@test.com", type: "home" }
59
- ]
76
+ ],
77
+ phone_numbers: [
78
+ {
79
+ number: '123456'
80
+ }
81
+ ],
82
+ phone_number: {
83
+ number: '123456'
84
+ }
60
85
  }
61
86
  end
62
87
  end
@@ -14,10 +14,22 @@ module SerializableObjectTest
14
14
  attr_accessor :email
15
15
  end
16
16
 
17
+ class PhoneNumber
18
+ attr_accessor :number
19
+ end
20
+
21
+ class PhoneNumbersSerializer
22
+ include ActiveSerializer::SerializableObject
23
+
24
+ serialization_rules do |phone_numbers|
25
+ attributes :number
26
+ end
27
+ end
28
+
17
29
  class ContactSerializer
18
30
  include ActiveSerializer::SerializableObject
19
31
 
20
- serialization_rules do |contact, home_address, contact_emails|
32
+ serialization_rules do |contact, home_address, contact_emails, phone_numbers|
21
33
  attributes :first_name, :last_name, contact
22
34
 
23
35
  attribute :full_name do
@@ -28,6 +40,9 @@ module SerializableObjectTest
28
40
  attributes :country, :city, :street, address
29
41
  end
30
42
 
43
+ serialize_collection :phone_numbers, phone_numbers, PhoneNumbersSerializer
44
+ serialize_entity :phone_number, phone_numbers.first, PhoneNumbersSerializer
45
+
31
46
  resources :emails, contact_emails do |email|
32
47
  attributes :email
33
48
  attribute :type do
@@ -54,7 +69,10 @@ module SerializableObjectTest
54
69
  home_address.city = 'Kazan'
55
70
  home_address.street = 'Kosmonavton'
56
71
 
57
- serialized_contact = ContactSerializer.serialize(contact, home_address, contact_emails)
72
+ phone_number = PhoneNumber.new
73
+ phone_number.number = '123456'
74
+
75
+ serialized_contact = ContactSerializer.serialize(contact, home_address, contact_emails, [phone_number])
58
76
  serialized_contact.should == {
59
77
  first_name: "John",
60
78
  last_name: "Smith",
@@ -67,6 +85,14 @@ module SerializableObjectTest
67
85
  emails: [
68
86
  { email: "test@test.com", type: "home" },
69
87
  { email: "test2@test.com", type: "home" }
88
+ ],
89
+ phone_number: {
90
+ number: '123456'
91
+ },
92
+ phone_numbers: [
93
+ {
94
+ number: '123456'
95
+ }
70
96
  ]
71
97
  }
72
98
  end
@@ -1,6 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
- require 'debugger'
3
+ require 'byebug'
4
4
  require 'active_serializer'
5
5
 
6
6
  RSpec.configure do |config|
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_serializer
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.0
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Albert Gazizov
@@ -10,56 +9,50 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-04-08 00:00:00.000000000 Z
12
+ date: 2014-05-25 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- prerelease: false
17
15
  name: bundler
18
- type: :development
19
- version_requirements: !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
20
17
  requirements:
21
- - - ~>
18
+ - - "~>"
22
19
  - !ruby/object:Gem::Version
23
20
  version: '1.3'
24
- none: false
25
- requirement: !ruby/object:Gem::Requirement
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
26
24
  requirements:
27
- - - ~>
25
+ - - "~>"
28
26
  - !ruby/object:Gem::Version
29
27
  version: '1.3'
30
- none: false
31
28
  - !ruby/object:Gem::Dependency
32
- prerelease: false
33
29
  name: rake
34
- type: :development
35
- version_requirements: !ruby/object:Gem::Requirement
30
+ requirement: !ruby/object:Gem::Requirement
36
31
  requirements:
37
- - - ! '>='
32
+ - - ">="
38
33
  - !ruby/object:Gem::Version
39
34
  version: '0'
40
- none: false
41
- requirement: !ruby/object:Gem::Requirement
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
42
38
  requirements:
43
- - - ! '>='
39
+ - - ">="
44
40
  - !ruby/object:Gem::Version
45
41
  version: '0'
46
- none: false
47
42
  - !ruby/object:Gem::Dependency
48
- prerelease: false
49
43
  name: activesupport
50
- type: :development
51
- version_requirements: !ruby/object:Gem::Requirement
44
+ requirement: !ruby/object:Gem::Requirement
52
45
  requirements:
53
- - - ! '>='
46
+ - - ">="
54
47
  - !ruby/object:Gem::Version
55
48
  version: '0'
56
- none: false
57
- requirement: !ruby/object:Gem::Requirement
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
58
52
  requirements:
59
- - - ! '>='
53
+ - - ">="
60
54
  - !ruby/object:Gem::Version
61
55
  version: '0'
62
- none: false
63
56
  description: Object to Hash serializer
64
57
  email:
65
58
  - deeper4k@gmail.com
@@ -68,7 +61,7 @@ executables: []
68
61
  extensions: []
69
62
  extra_rdoc_files: []
70
63
  files:
71
- - .gitignore
64
+ - ".gitignore"
72
65
  - Gemfile
73
66
  - Gemfile.lock
74
67
  - LICENSE.txt
@@ -94,33 +87,26 @@ files:
94
87
  homepage: http://github.com/droidlabs/active_serializer
95
88
  licenses:
96
89
  - MIT
90
+ metadata: {}
97
91
  post_install_message:
98
92
  rdoc_options: []
99
93
  require_paths:
100
94
  - lib
101
95
  required_ruby_version: !ruby/object:Gem::Requirement
102
96
  requirements:
103
- - - ! '>='
97
+ - - ">="
104
98
  - !ruby/object:Gem::Version
105
- segments:
106
- - 0
107
- hash: 3700777157026269907
108
99
  version: '0'
109
- none: false
110
100
  required_rubygems_version: !ruby/object:Gem::Requirement
111
101
  requirements:
112
- - - ! '>='
102
+ - - ">="
113
103
  - !ruby/object:Gem::Version
114
- segments:
115
- - 0
116
- hash: 3700777157026269907
117
104
  version: '0'
118
- none: false
119
105
  requirements: []
120
106
  rubyforge_project:
121
- rubygems_version: 1.8.23
107
+ rubygems_version: 2.2.0
122
108
  signing_key:
123
- specification_version: 3
109
+ specification_version: 4
124
110
  summary: Adds simple DSL to convert ruby objects to hash
125
111
  test_files:
126
112
  - spec/active_serializer/serializable_hash_spec.rb