serdes 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +1 -0
- data/lib/serdes/version.rb +2 -2
- data/lib/serdes.rb +11 -0
- 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: 8bf9df8e819833cb4f8681e04251c49eced97ab46908dcb0312566f90f02fa38
|
4
|
+
data.tar.gz: baa10bbd6a6c1d580f2a4738f2d4ef7b5714d67ecb7429b9a4748ddcffa21e4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d7b88eabfff7f7379290a4459f0335e7a832dd8959b46c52a18f60ba044feeacda46b95cd738618ffcba58c9981d7bd22efb65a3514d4fe8896b18052f1f0c0
|
7
|
+
data.tar.gz: 0e534ceb8ee52f6314386cf0c9286a7fa0a6b2d6263c7cd7d6b5dd01d1327ac61a256570fd60d0a5472efe6a1ea64daac144c8f2261f189c551631c09ab5133f
|
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
@@ -153,6 +153,10 @@ module Serdes
|
|
153
153
|
@_serde_rename_strategy = strategy
|
154
154
|
end
|
155
155
|
|
156
|
+
def symbolize_all_keys
|
157
|
+
@_serde_symbolized_all_keys = true
|
158
|
+
end
|
159
|
+
|
156
160
|
def from(obj)
|
157
161
|
Functions.from__proxy(self, obj)
|
158
162
|
end
|
@@ -161,6 +165,8 @@ module Serdes
|
|
161
165
|
new.tap do |instance|
|
162
166
|
_serde_attrs.each_value do |attr|
|
163
167
|
key = attr.serialized_name(_serde_rename_strategy)
|
168
|
+
key = key.to_sym if _serde_symbolized_all_keys
|
169
|
+
|
164
170
|
serialized_value = hash[key]
|
165
171
|
|
166
172
|
value = Functions.from__proxy(attr.attr_type, serialized_value)
|
@@ -181,12 +187,17 @@ module Serdes
|
|
181
187
|
private def _serde_rename_strategy
|
182
188
|
@_serde_rename_strategy ||= :snake_case
|
183
189
|
end
|
190
|
+
|
191
|
+
private def _serde_symbolized_all_keys
|
192
|
+
@_serde_symbolized_all_keys ||= false
|
193
|
+
end
|
184
194
|
end
|
185
195
|
|
186
196
|
module InstanceMethods
|
187
197
|
def to_hash
|
188
198
|
self.class.__send__(:_serde_attrs).each_with_object({}) do |(name, attr), hash|
|
189
199
|
key = attr.serialized_name(self.class.__send__(:_serde_rename_strategy))
|
200
|
+
key = key.to_sym if self.class.__send__(:_serde_symbolized_all_keys)
|
190
201
|
value = __send__(name)
|
191
202
|
|
192
203
|
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.1
|
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-05 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: Serdes is a tool for serializing and deserializing class.
|
13
13
|
email:
|