fast_serializer_ruby 0.4.1 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FastSerializer
4
+ class Schema
5
+ module Mixin
6
+ module ClassMethods
7
+ attr_accessor :__schema__, :__patched__
8
+
9
+ def inherited(subclass)
10
+ subclass.__schema__ = __schema__.deep_copy
11
+ end
12
+
13
+ def method_missing(method, *args, &block)
14
+ if __schema__.respond_to?(method)
15
+ __schema__.public_send(method, *args, &block)
16
+ else
17
+ super
18
+ end
19
+ end
20
+
21
+ def respond_to_missing?(method_name, include_private = false)
22
+ __schema__.respond_to?(method_name) || super
23
+ end
24
+
25
+ def __patch_with_attribute_definition
26
+ injectable_attributes = __schema__.serialization_schema.attributes.select { |_key, attribute| attribute.injectable? }
27
+ injectable_attributes.each { |_, attribute| attribute.inject(self) }
28
+ self.__patched__ = true
29
+
30
+ __patched__.freeze
31
+ end
32
+ end
33
+
34
+ module InstanceMethods
35
+ attr_accessor :resource, :params
36
+
37
+ def initialize(resource, params = {})
38
+ self.resource = resource
39
+ self.params = params || {}
40
+ end
41
+
42
+ alias object resource
43
+
44
+ def serializable_hash(opts = {})
45
+ Utils.ref_merge(params, opts)
46
+ self.params = params
47
+
48
+ unless self.class.__patched__
49
+ self.class.__patch_with_attribute_definition
50
+ end
51
+
52
+ self.class.__schema__.serialize_resource(resource, params, self)
53
+ end
54
+
55
+ def serialized_json(opts = {})
56
+ FastSerializer.config.coder.dump(serializable_hash(opts))
57
+ end
58
+
59
+ alias as_json serializable_hash
60
+ alias to_json serialized_json
61
+ end
62
+
63
+ def self.included(base)
64
+ base.extend ClassMethods
65
+ base.include InstanceMethods
66
+ base.__schema__ = FastSerializer::Schema.new
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FastSerializer
4
+ module Utils
5
+ def self.symbolize_keys(hash)
6
+ res = {}
7
+ hash.each { |key, value| res[key.to_sym] = value }
8
+ hash
9
+ end
10
+
11
+ def self.ref_merge(hash_a, hash_b)
12
+ hash_b.each do |key, value|
13
+ hash_a[key] = value
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FastSerializer
4
- VERSION = '0.4.1'
4
+ VERSION = '0.6.4'
5
5
  end
metadata CHANGED
@@ -1,142 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_serializer_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeny Stepanov
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-17 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: active_model_serializers
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.10.0
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.10.0
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "<"
32
- - !ruby/object:Gem::Version
33
- version: '6'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "<"
39
- - !ruby/object:Gem::Version
40
- version: '6'
41
- - !ruby/object:Gem::Dependency
42
- name: factory_bot
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: faker
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: pry
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '10.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '10.0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec-benchmark
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- description: fast_serializer is a lightweight ruby objects serializer.
11
+ date: 2021-02-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This library intends to solve such a typical and on the other hand important
14
+ problem as efficient ruby object to hash transformation.
140
15
  email:
141
16
  - estepnv@icloud.com
142
17
  executables: []
@@ -166,6 +41,8 @@ files:
166
41
  - lib/fast_serializer/json_model/object.rb
167
42
  - lib/fast_serializer/json_model/relationship.rb
168
43
  - lib/fast_serializer/schema.rb
44
+ - lib/fast_serializer/schema/mixin.rb
45
+ - lib/fast_serializer/utils.rb
169
46
  - lib/fast_serializer/version.rb
170
47
  homepage: https://github.com/estepnv/fast_serializer
171
48
  licenses:
@@ -182,15 +59,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
59
  requirements:
183
60
  - - ">="
184
61
  - !ruby/object:Gem::Version
185
- version: '0'
62
+ version: 2.3.0
186
63
  required_rubygems_version: !ruby/object:Gem::Requirement
187
64
  requirements:
188
65
  - - ">="
189
66
  - !ruby/object:Gem::Version
190
67
  version: '0'
191
68
  requirements: []
192
- rubygems_version: 3.0.4
69
+ rubygems_version: 3.1.2
193
70
  signing_key:
194
71
  specification_version: 4
195
- summary: Yet another serializer gem, but fast
72
+ summary: fast_serializer is a lightweight ruby objects serializer.
196
73
  test_files: []