serega 0.1.4 → 0.3.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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/serega/attribute.rb +17 -4
- data/lib/serega/config.rb +69 -27
- data/lib/serega/convert.rb +7 -7
- data/lib/serega/convert_item.rb +4 -4
- data/lib/serega/errors.rb +12 -0
- data/lib/serega/helpers/serializer_class_helper.rb +1 -1
- data/lib/serega/json/adapter.rb +17 -0
- data/lib/serega/json/json.rb +17 -0
- data/lib/serega/json/oj.rb +17 -0
- data/lib/serega/map.rb +25 -15
- data/lib/serega/plugins/activerecord_preloads/activerecord_preloads.rb +3 -3
- data/lib/serega/plugins/activerecord_preloads/lib/preloader.rb +2 -2
- data/lib/serega/plugins/context_metadata/context_metadata.rb +34 -11
- data/lib/serega/plugins/formatters/formatters.rb +35 -6
- data/lib/serega/plugins/hide_nil/hide_nil.rb +7 -7
- data/lib/serega/plugins/metadata/meta_attribute.rb +5 -5
- data/lib/serega/plugins/metadata/metadata.rb +30 -5
- data/lib/serega/plugins/metadata/validations/check_block.rb +4 -4
- data/lib/serega/plugins/metadata/validations/check_opt_hide_empty.rb +3 -3
- data/lib/serega/plugins/metadata/validations/check_opt_hide_nil.rb +3 -3
- data/lib/serega/plugins/metadata/validations/check_opts.rb +3 -3
- data/lib/serega/plugins/metadata/validations/check_path.rb +3 -3
- data/lib/serega/plugins/preloads/lib/enum_deep_freeze.rb +1 -1
- data/lib/serega/plugins/preloads/lib/format_user_preloads.rb +1 -1
- data/lib/serega/plugins/preloads/lib/main_preload_path.rb +1 -1
- data/lib/serega/plugins/preloads/lib/preloads_constructor.rb +2 -2
- data/lib/serega/plugins/preloads/preloads.rb +63 -5
- data/lib/serega/plugins/preloads/validations/check_opt_preload.rb +17 -0
- data/lib/serega/plugins/preloads/validations/check_opt_preload_path.rb +4 -4
- data/lib/serega/plugins/presenter/presenter.rb +6 -6
- data/lib/serega/plugins/root/root.rb +48 -8
- data/lib/serega/plugins/string_modifiers/parse_string_modifiers.rb +1 -1
- data/lib/serega/plugins/string_modifiers/string_modifiers.rb +7 -7
- data/lib/serega/plugins.rb +7 -7
- data/lib/serega/utils/enum_deep_dup.rb +1 -1
- data/lib/serega/utils/to_hash.rb +2 -2
- data/lib/serega/validations/attribute/check_block.rb +3 -3
- data/lib/serega/validations/attribute/check_name.rb +3 -3
- data/lib/serega/validations/attribute/check_opt_const.rb +5 -5
- data/lib/serega/validations/attribute/check_opt_delegate.rb +57 -0
- data/lib/serega/validations/attribute/check_opt_hide.rb +2 -2
- data/lib/serega/validations/attribute/check_opt_key.rb +5 -5
- data/lib/serega/validations/attribute/check_opt_many.rb +2 -2
- data/lib/serega/validations/attribute/check_opt_serializer.rb +3 -3
- data/lib/serega/validations/attribute/check_opt_value.rb +7 -7
- data/lib/serega/validations/check_attribute_params.rb +4 -3
- data/lib/serega/validations/check_initiate_params.rb +23 -10
- data/lib/serega/validations/check_serialize_params.rb +16 -10
- data/lib/serega/{plugins/validate_modifiers/validate.rb → validations/initiate/check_modifiers.rb} +5 -5
- data/lib/serega/validations/utils/check_allowed_keys.rb +2 -2
- data/lib/serega/validations/utils/check_opt_is_bool.rb +2 -2
- data/lib/serega/validations/utils/check_opt_is_hash.rb +2 -2
- data/lib/serega/validations/utils/check_opt_is_string_or_symbol.rb +2 -2
- data/lib/serega.rb +52 -72
- metadata +9 -6
- data/lib/serega/plugins/validate_modifiers/validate_modifiers.rb +0 -44
- data/lib/serega/utils/as_json.rb +0 -35
- data/lib/serega/utils/to_json.rb +0 -22
data/lib/serega.rb
CHANGED
@@ -4,9 +4,6 @@ require_relative "serega/version"
|
|
4
4
|
|
5
5
|
# Parent class for your serializers
|
6
6
|
class Serega
|
7
|
-
# A generic exception Serega uses.
|
8
|
-
class Error < StandardError; end
|
9
|
-
|
10
7
|
# @return [Hash] frozen hash
|
11
8
|
FROZEN_EMPTY_HASH = {}.freeze
|
12
9
|
|
@@ -14,11 +11,11 @@ class Serega
|
|
14
11
|
FROZEN_EMPTY_ARRAY = [].freeze
|
15
12
|
end
|
16
13
|
|
14
|
+
require_relative "serega/errors"
|
17
15
|
require_relative "serega/helpers/serializer_class_helper"
|
18
16
|
require_relative "serega/utils/enum_deep_dup"
|
19
17
|
require_relative "serega/utils/to_hash"
|
20
|
-
require_relative "serega/
|
21
|
-
require_relative "serega/utils/as_json"
|
18
|
+
require_relative "serega/json/adapter"
|
22
19
|
|
23
20
|
require_relative "serega/attribute"
|
24
21
|
require_relative "serega/validations/utils/check_allowed_keys"
|
@@ -29,10 +26,12 @@ require_relative "serega/validations/attribute/check_block"
|
|
29
26
|
require_relative "serega/validations/attribute/check_name"
|
30
27
|
require_relative "serega/validations/attribute/check_opt_const"
|
31
28
|
require_relative "serega/validations/attribute/check_opt_hide"
|
29
|
+
require_relative "serega/validations/attribute/check_opt_delegate"
|
32
30
|
require_relative "serega/validations/attribute/check_opt_key"
|
33
31
|
require_relative "serega/validations/attribute/check_opt_many"
|
34
32
|
require_relative "serega/validations/attribute/check_opt_serializer"
|
35
33
|
require_relative "serega/validations/attribute/check_opt_value"
|
34
|
+
require_relative "serega/validations/initiate/check_modifiers"
|
36
35
|
require_relative "serega/validations/check_attribute_params"
|
37
36
|
require_relative "serega/validations/check_initiate_params"
|
38
37
|
require_relative "serega/validations/check_serialize_params"
|
@@ -44,55 +43,49 @@ require_relative "serega/map"
|
|
44
43
|
require_relative "serega/plugins"
|
45
44
|
|
46
45
|
class Serega
|
47
|
-
@config =
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
attribute_keys: %i[key value serializer many hide const],
|
52
|
-
serialize_keys: %i[context many],
|
53
|
-
max_cached_map_per_serializer_count: 50,
|
54
|
-
to_json: ->(data) { Utils::ToJSON.call(data) }
|
55
|
-
}
|
56
|
-
)
|
57
|
-
|
58
|
-
check_attribute_params_class = Class.new(Validations::CheckAttributeParams)
|
46
|
+
@config = SeregaConfig.new
|
47
|
+
|
48
|
+
# Validates `Serializer.attribute` params
|
49
|
+
check_attribute_params_class = Class.new(SeregaValidations::CheckAttributeParams)
|
59
50
|
check_attribute_params_class.serializer_class = self
|
60
51
|
const_set(:CheckAttributeParams, check_attribute_params_class)
|
61
52
|
|
62
|
-
|
53
|
+
# Validates `Serializer#new` params
|
54
|
+
check_initiate_params_class = Class.new(SeregaValidations::CheckInitiateParams)
|
63
55
|
check_initiate_params_class.serializer_class = self
|
64
56
|
const_set(:CheckInitiateParams, check_initiate_params_class)
|
65
57
|
|
66
|
-
|
58
|
+
# Validates `serializer#call(obj, PARAMS)` params
|
59
|
+
check_serialize_params_class = Class.new(SeregaValidations::CheckSerializeParams)
|
67
60
|
check_serialize_params_class.serializer_class = self
|
68
61
|
const_set(:CheckSerializeParams, check_serialize_params_class)
|
69
62
|
|
70
63
|
# Core serializer class methods
|
71
64
|
module ClassMethods
|
72
|
-
# @return [
|
65
|
+
# @return [SeregaConfig] current serializer config
|
73
66
|
attr_reader :config
|
74
67
|
|
75
68
|
private def inherited(subclass)
|
76
|
-
config_class = Class.new(self::
|
69
|
+
config_class = Class.new(self::SeregaConfig)
|
77
70
|
config_class.serializer_class = subclass
|
78
|
-
subclass.const_set(:
|
79
|
-
subclass.instance_variable_set(:@config, subclass::
|
71
|
+
subclass.const_set(:SeregaConfig, config_class)
|
72
|
+
subclass.instance_variable_set(:@config, subclass::SeregaConfig.new(config.opts))
|
80
73
|
|
81
|
-
attribute_class = Class.new(self::
|
74
|
+
attribute_class = Class.new(self::SeregaAttribute)
|
82
75
|
attribute_class.serializer_class = subclass
|
83
|
-
subclass.const_set(:
|
76
|
+
subclass.const_set(:SeregaAttribute, attribute_class)
|
84
77
|
|
85
|
-
map_class = Class.new(self::
|
78
|
+
map_class = Class.new(self::SeregaMap)
|
86
79
|
map_class.serializer_class = subclass
|
87
|
-
subclass.const_set(:
|
80
|
+
subclass.const_set(:SeregaMap, map_class)
|
88
81
|
|
89
|
-
convert_class = Class.new(self::
|
82
|
+
convert_class = Class.new(self::SeregaConvert)
|
90
83
|
convert_class.serializer_class = subclass
|
91
|
-
subclass.const_set(:
|
84
|
+
subclass.const_set(:SeregaConvert, convert_class)
|
92
85
|
|
93
|
-
convert_item_class = Class.new(self::
|
86
|
+
convert_item_class = Class.new(self::SeregaConvertItem)
|
94
87
|
convert_item_class.serializer_class = subclass
|
95
|
-
subclass.const_set(:
|
88
|
+
subclass.const_set(:SeregaConvertItem, convert_item_class)
|
96
89
|
|
97
90
|
check_attribute_params_class = Class.new(self::CheckAttributeParams)
|
98
91
|
check_attribute_params_class.serializer_class = subclass
|
@@ -123,9 +116,9 @@ class Serega
|
|
123
116
|
# @return [class<Module>] Loaded plugin module
|
124
117
|
#
|
125
118
|
def plugin(name, **opts)
|
126
|
-
raise
|
119
|
+
raise SeregaError, "This plugin is already loaded" if plugin_used?(name)
|
127
120
|
|
128
|
-
plugin =
|
121
|
+
plugin = SeregaPlugins.find_plugin(name)
|
129
122
|
|
130
123
|
# We split loading of plugin to three parts - before_load, load, after_load:
|
131
124
|
#
|
@@ -137,7 +130,7 @@ class Serega
|
|
137
130
|
plugin.after_load_plugin(self, **opts) if plugin.respond_to?(:after_load_plugin)
|
138
131
|
|
139
132
|
# Store attached plugins, so we can check it is loaded later
|
140
|
-
config
|
133
|
+
config.plugins << (plugin.respond_to?(:plugin_name) ? plugin.plugin_name : plugin)
|
141
134
|
|
142
135
|
plugin
|
143
136
|
end
|
@@ -156,7 +149,7 @@ class Serega
|
|
156
149
|
else name
|
157
150
|
end
|
158
151
|
|
159
|
-
config
|
152
|
+
config.plugins.include?(plugin_name)
|
160
153
|
end
|
161
154
|
|
162
155
|
#
|
@@ -175,29 +168,15 @@ class Serega
|
|
175
168
|
# @param opts [Hash] Options to serialize attribute
|
176
169
|
# @param block [Proc] Custom block to find attribute value. Accepts object and context.
|
177
170
|
#
|
178
|
-
# @return [Serega::
|
171
|
+
# @return [Serega::SeregaAttribute] Added attribute
|
179
172
|
#
|
180
173
|
def attribute(name, **opts, &block)
|
181
|
-
attribute = self::
|
174
|
+
attribute = self::SeregaAttribute.new(name: name, opts: opts, block: block)
|
182
175
|
attributes[attribute.name] = attribute
|
183
176
|
end
|
184
177
|
|
185
|
-
#
|
186
|
-
# Adds attribute with forced :serializer option
|
187
|
-
#
|
188
|
-
# @param name [Symbol] Attribute name. Attribute value will be found by executing `object.<name>`
|
189
|
-
# @param serializer [Serega, Proc] Specifies nested serializer for relationship
|
190
|
-
# @param opts [Hash] Options for attribute serialization
|
191
|
-
# @param block [Proc] Custom block to find attribute value. Accepts object and context.
|
192
|
-
#
|
193
|
-
# @return [Serega::Attribute] Added attribute
|
194
|
-
#
|
195
|
-
def relation(name, serializer:, **opts, &block)
|
196
|
-
attribute(name, serializer: serializer, **opts, &block)
|
197
|
-
end
|
198
|
-
|
199
178
|
def call(object, opts = FROZEN_EMPTY_HASH)
|
200
|
-
initiate_keys = config
|
179
|
+
initiate_keys = config.initiate_keys
|
201
180
|
new(opts.slice(*initiate_keys)).to_h(object, opts.except(*initiate_keys))
|
202
181
|
end
|
203
182
|
|
@@ -206,13 +185,12 @@ class Serega
|
|
206
185
|
end
|
207
186
|
|
208
187
|
def to_json(object, opts = FROZEN_EMPTY_HASH)
|
209
|
-
initiate_keys = config
|
188
|
+
initiate_keys = config.initiate_keys
|
210
189
|
new(opts.slice(*initiate_keys)).to_json(object, opts.except(*initiate_keys))
|
211
190
|
end
|
212
191
|
|
213
192
|
def as_json(object, opts = FROZEN_EMPTY_HASH)
|
214
|
-
|
215
|
-
new(opts.slice(*initiate_keys)).as_json(object, opts.except(*initiate_keys))
|
193
|
+
config.from_json.call(to_json(object, opts))
|
216
194
|
end
|
217
195
|
end
|
218
196
|
|
@@ -230,9 +208,8 @@ class Serega
|
|
230
208
|
# @param with [Array, Hash, String, Symbol] Attributes (usually hidden) to serialize additionally
|
231
209
|
#
|
232
210
|
def initialize(opts = FROZEN_EMPTY_HASH)
|
233
|
-
|
234
|
-
|
235
|
-
@opts = opts
|
211
|
+
@opts = opts == FROZEN_EMPTY_HASH ? opts : prepare_modifiers(opts)
|
212
|
+
self.class::CheckInitiateParams.new(@opts).validate if opts.fetch(:check_initiate_params) { config.check_initiate_params }
|
236
213
|
end
|
237
214
|
|
238
215
|
#
|
@@ -244,10 +221,10 @@ class Serega
|
|
244
221
|
# @return [Hash] Serialization result
|
245
222
|
#
|
246
223
|
def call(object, opts = {})
|
247
|
-
self.class::CheckSerializeParams.
|
224
|
+
self.class::CheckSerializeParams.new(opts).validate
|
248
225
|
opts[:context] ||= {}
|
249
226
|
|
250
|
-
self.class::
|
227
|
+
self.class::SeregaConvert.call(object, **opts, map: map)
|
251
228
|
end
|
252
229
|
|
253
230
|
# @see #call
|
@@ -262,37 +239,40 @@ class Serega
|
|
262
239
|
#
|
263
240
|
# @return [Hash] Serialization result
|
264
241
|
#
|
265
|
-
def to_json(object, opts =
|
242
|
+
def to_json(object, opts = {})
|
266
243
|
hash = to_h(object, opts)
|
267
|
-
|
244
|
+
config.to_json.call(hash)
|
268
245
|
end
|
269
246
|
|
270
247
|
#
|
271
248
|
# Serializes provided object as json (uses only JSON-compatible types)
|
272
|
-
# When you later serialize/
|
249
|
+
# When you later serialize/de-serialize it from JSON you should receive
|
273
250
|
# equal object
|
274
251
|
#
|
275
252
|
# @param object [Object] Serialized object
|
276
253
|
#
|
277
254
|
# @return [Hash] Serialization result
|
278
255
|
#
|
279
|
-
def as_json(object, opts =
|
280
|
-
|
281
|
-
|
256
|
+
def as_json(object, opts = {})
|
257
|
+
json = to_json(object, opts)
|
258
|
+
config.from_json.call(json)
|
282
259
|
end
|
283
260
|
|
284
261
|
private
|
285
262
|
|
263
|
+
def config
|
264
|
+
self.class.config
|
265
|
+
end
|
266
|
+
|
286
267
|
def map
|
287
|
-
@map ||= self.class::
|
268
|
+
@map ||= self.class::SeregaMap.call(opts)
|
288
269
|
end
|
289
270
|
|
290
271
|
def prepare_modifiers(opts)
|
291
|
-
{
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
}
|
272
|
+
opts.each_with_object({}) do |(key, value), obj|
|
273
|
+
value = SeregaUtils::ToHash.call(value) if (key == :only) || (key == :except) || (key == :with)
|
274
|
+
obj[key] = value
|
275
|
+
end
|
296
276
|
end
|
297
277
|
end
|
298
278
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serega
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Glushkov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -23,7 +23,11 @@ files:
|
|
23
23
|
- lib/serega/config.rb
|
24
24
|
- lib/serega/convert.rb
|
25
25
|
- lib/serega/convert_item.rb
|
26
|
+
- lib/serega/errors.rb
|
26
27
|
- lib/serega/helpers/serializer_class_helper.rb
|
28
|
+
- lib/serega/json/adapter.rb
|
29
|
+
- lib/serega/json/json.rb
|
30
|
+
- lib/serega/json/oj.rb
|
27
31
|
- lib/serega/map.rb
|
28
32
|
- lib/serega/plugins.rb
|
29
33
|
- lib/serega/plugins/activerecord_preloads/activerecord_preloads.rb
|
@@ -43,20 +47,18 @@ files:
|
|
43
47
|
- lib/serega/plugins/preloads/lib/main_preload_path.rb
|
44
48
|
- lib/serega/plugins/preloads/lib/preloads_constructor.rb
|
45
49
|
- lib/serega/plugins/preloads/preloads.rb
|
50
|
+
- lib/serega/plugins/preloads/validations/check_opt_preload.rb
|
46
51
|
- lib/serega/plugins/preloads/validations/check_opt_preload_path.rb
|
47
52
|
- lib/serega/plugins/presenter/presenter.rb
|
48
53
|
- lib/serega/plugins/root/root.rb
|
49
54
|
- lib/serega/plugins/string_modifiers/parse_string_modifiers.rb
|
50
55
|
- lib/serega/plugins/string_modifiers/string_modifiers.rb
|
51
|
-
- lib/serega/plugins/validate_modifiers/validate.rb
|
52
|
-
- lib/serega/plugins/validate_modifiers/validate_modifiers.rb
|
53
|
-
- lib/serega/utils/as_json.rb
|
54
56
|
- lib/serega/utils/enum_deep_dup.rb
|
55
57
|
- lib/serega/utils/to_hash.rb
|
56
|
-
- lib/serega/utils/to_json.rb
|
57
58
|
- lib/serega/validations/attribute/check_block.rb
|
58
59
|
- lib/serega/validations/attribute/check_name.rb
|
59
60
|
- lib/serega/validations/attribute/check_opt_const.rb
|
61
|
+
- lib/serega/validations/attribute/check_opt_delegate.rb
|
60
62
|
- lib/serega/validations/attribute/check_opt_hide.rb
|
61
63
|
- lib/serega/validations/attribute/check_opt_key.rb
|
62
64
|
- lib/serega/validations/attribute/check_opt_many.rb
|
@@ -65,6 +67,7 @@ files:
|
|
65
67
|
- lib/serega/validations/check_attribute_params.rb
|
66
68
|
- lib/serega/validations/check_initiate_params.rb
|
67
69
|
- lib/serega/validations/check_serialize_params.rb
|
70
|
+
- lib/serega/validations/initiate/check_modifiers.rb
|
68
71
|
- lib/serega/validations/utils/check_allowed_keys.rb
|
69
72
|
- lib/serega/validations/utils/check_opt_is_bool.rb
|
70
73
|
- lib/serega/validations/utils/check_opt_is_hash.rb
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Serega
|
4
|
-
module Plugins
|
5
|
-
module ValidateModifiers
|
6
|
-
def self.plugin_name
|
7
|
-
:validate_modifiers
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.load_plugin(serializer_class, **_opts)
|
11
|
-
serializer_class.include(InstanceMethods)
|
12
|
-
require_relative "./validate"
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.after_load_plugin(serializer_class, **opts)
|
16
|
-
serializer_class.config[:validate_modifiers] = {auto: opts.fetch(:auto, true)}
|
17
|
-
end
|
18
|
-
|
19
|
-
module InstanceMethods
|
20
|
-
# Raises error if some modifiers are invalid
|
21
|
-
def validate_modifiers
|
22
|
-
@modifiers_validated ||= begin
|
23
|
-
Validate.call(self.class, opts[:only])
|
24
|
-
Validate.call(self.class, opts[:except])
|
25
|
-
Validate.call(self.class, opts[:with])
|
26
|
-
true
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def initialize(opts)
|
33
|
-
super
|
34
|
-
validate_modifiers if self.class.config[:validate_modifiers][:auto]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
module InstanceMethods
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
register_plugin(ValidateModifiers.plugin_name, ValidateModifiers)
|
43
|
-
end
|
44
|
-
end
|
data/lib/serega/utils/as_json.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Serega
|
4
|
-
module Utils
|
5
|
-
class AsJSON
|
6
|
-
DOUBLE_QUOTE = '"'
|
7
|
-
|
8
|
-
class << self
|
9
|
-
def call(data, to_json:)
|
10
|
-
case data
|
11
|
-
when Hash
|
12
|
-
data.each_with_object({}) do |(key, value), new_data|
|
13
|
-
new_key = key.to_s
|
14
|
-
new_value = call(value, to_json: to_json)
|
15
|
-
new_data[new_key] = new_value
|
16
|
-
end
|
17
|
-
when Array
|
18
|
-
data.map { |value| call(value, to_json: to_json) }
|
19
|
-
when NilClass, Integer, Float, String, TrueClass, FalseClass
|
20
|
-
data
|
21
|
-
when Symbol
|
22
|
-
data.to_s
|
23
|
-
else
|
24
|
-
res = to_json.call(data)
|
25
|
-
if res.start_with?(DOUBLE_QUOTE) && res.end_with?(DOUBLE_QUOTE)
|
26
|
-
res.delete_prefix!(DOUBLE_QUOTE)
|
27
|
-
res.delete_suffix!(DOUBLE_QUOTE)
|
28
|
-
end
|
29
|
-
res
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/serega/utils/to_json.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Serega
|
4
|
-
module Utils
|
5
|
-
class ToJSON
|
6
|
-
class << self
|
7
|
-
def call(data)
|
8
|
-
json_adapter.dump(data)
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def json_adapter
|
14
|
-
@json_adapter ||= begin
|
15
|
-
require "json"
|
16
|
-
::JSON
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|