serdes 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +1 -0
- data/lib/serdes/version.rb +2 -2
- data/lib/serdes.rb +16 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3fda61b6d5f8b491822d777eb171a34ccaa130e001634a4328a81113def4183
|
4
|
+
data.tar.gz: 6151fcc98e9ed477fde75a49f30df2b26d74ea14722a3ca1705e73a4e7bd84bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfb5ef4378c8c2ac18fad467e76c26aea7d6a67709ecf9ff206ce378c08ebaebba1dbe384c4bacd342c7f2f550a6ce35b44d67cdedc30fc4ef47b5ae0a03b255
|
7
|
+
data.tar.gz: 1a90bbb57045ecccdb0e7282d5ce29e082917cf64033bb7f3b46a286c492d86914657f8b9459d3fe0ff40a7478ebf38ea2ee4e8879e35e86bb6c958dfc5e4be1
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -73,6 +73,7 @@ User.from(user_hash) # => raise Serdes::TypeError
|
|
73
73
|
|
74
74
|
- `rename_all_attributes`: Rename all attributes when serializing and deserializing.
|
75
75
|
- Supported: `:snake_case`, `:PascalCase`
|
76
|
+
- `symbolize_all_keys`: Symbolize all keys when serializing and deserializing Hash, and vice versa.
|
76
77
|
|
77
78
|
## Development
|
78
79
|
|
data/lib/serdes/version.rb
CHANGED
data/lib/serdes.rb
CHANGED
@@ -30,7 +30,11 @@ module Serdes
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def permit?(value)
|
33
|
-
@exact_type ==
|
33
|
+
if @exact_type == Boolean
|
34
|
+
value == true || value == false
|
35
|
+
else
|
36
|
+
@exact_type == value.class
|
37
|
+
end
|
34
38
|
end
|
35
39
|
|
36
40
|
def to_s
|
@@ -153,6 +157,10 @@ module Serdes
|
|
153
157
|
@_serde_rename_strategy = strategy
|
154
158
|
end
|
155
159
|
|
160
|
+
def symbolize_all_keys
|
161
|
+
@_serde_symbolized_all_keys = true
|
162
|
+
end
|
163
|
+
|
156
164
|
def from(obj)
|
157
165
|
Functions.from__proxy(self, obj)
|
158
166
|
end
|
@@ -161,6 +169,8 @@ module Serdes
|
|
161
169
|
new.tap do |instance|
|
162
170
|
_serde_attrs.each_value do |attr|
|
163
171
|
key = attr.serialized_name(_serde_rename_strategy)
|
172
|
+
key = key.to_sym if _serde_symbolized_all_keys
|
173
|
+
|
164
174
|
serialized_value = hash[key]
|
165
175
|
|
166
176
|
value = Functions.from__proxy(attr.attr_type, serialized_value)
|
@@ -181,12 +191,17 @@ module Serdes
|
|
181
191
|
private def _serde_rename_strategy
|
182
192
|
@_serde_rename_strategy ||= :snake_case
|
183
193
|
end
|
194
|
+
|
195
|
+
private def _serde_symbolized_all_keys
|
196
|
+
@_serde_symbolized_all_keys ||= false
|
197
|
+
end
|
184
198
|
end
|
185
199
|
|
186
200
|
module InstanceMethods
|
187
201
|
def to_hash
|
188
202
|
self.class.__send__(:_serde_attrs).each_with_object({}) do |(name, attr), hash|
|
189
203
|
key = attr.serialized_name(self.class.__send__(:_serde_rename_strategy))
|
204
|
+
key = key.to_sym if self.class.__send__(:_serde_symbolized_all_keys)
|
190
205
|
value = __send__(name)
|
191
206
|
|
192
207
|
hash[key] =
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serdes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shia
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-02-
|
10
|
+
date: 2025-02-09 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: Serdes is a tool for serializing and deserializing class.
|
13
13
|
email:
|