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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b3503dd727a37b864788db7ee33c3f3e4f78e2c74e507ffb5c609063f7bba74
4
- data.tar.gz: 2da0aab394b27b6f3a4446c002149ad2948734b9cc3be6ef535bb6edb6729314
3
+ metadata.gz: d3fda61b6d5f8b491822d777eb171a34ccaa130e001634a4328a81113def4183
4
+ data.tar.gz: 6151fcc98e9ed477fde75a49f30df2b26d74ea14722a3ca1705e73a4e7bd84bb
5
5
  SHA512:
6
- metadata.gz: 80a98b17cdabde8aec50f520d811123c199166576af8965ff5a52b636d49b082203ee7aebc74c344c80039ba09d6a3e1c6ca03201936c8be76c20160cdd10cca
7
- data.tar.gz: 34a2506c7337a94c676f5969f1f448de64ee34e2c377d0fa0f129056fa987f062dd41ff6a818c80e0071b15fde31155cdb5756c50a52f2dede5c6cc59c071f32
6
+ metadata.gz: dfb5ef4378c8c2ac18fad467e76c26aea7d6a67709ecf9ff206ce378c08ebaebba1dbe384c4bacd342c7f2f550a6ce35b44d67cdedc30fc4ef47b5ae0a03b255
7
+ data.tar.gz: 1a90bbb57045ecccdb0e7282d5ce29e082917cf64033bb7f3b46a286c492d86914657f8b9459d3fe0ff40a7478ebf38ea2ee4e8879e35e86bb6c958dfc5e4be1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.2] - 2025-02-09
4
+
5
+ - Fix `Boolean` type not working.
6
+
7
+ ## [0.1.1] - 2025-02-05
8
+
9
+ - Added `symbolized_all_keys` macro.
10
+
3
11
  ## [0.1.0] - 2025-02-03
4
12
 
5
13
  - Initial release
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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Serdes
4
- VERSION = "0.1.0"
5
- end
4
+ VERSION = "0.1.2"
5
+ end
data/lib/serdes.rb CHANGED
@@ -30,7 +30,11 @@ module Serdes
30
30
  end
31
31
 
32
32
  def permit?(value)
33
- @exact_type == value.class
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.0
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-03 00:00:00.000000000 Z
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: