serdes 0.1.0 → 0.1.2

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 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: