serdes 0.1.0 → 0.1.1

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: 8bf9df8e819833cb4f8681e04251c49eced97ab46908dcb0312566f90f02fa38
4
+ data.tar.gz: baa10bbd6a6c1d580f2a4738f2d4ef7b5714d67ecb7429b9a4748ddcffa21e4e
5
5
  SHA512:
6
- metadata.gz: 80a98b17cdabde8aec50f520d811123c199166576af8965ff5a52b636d49b082203ee7aebc74c344c80039ba09d6a3e1c6ca03201936c8be76c20160cdd10cca
7
- data.tar.gz: 34a2506c7337a94c676f5969f1f448de64ee34e2c377d0fa0f129056fa987f062dd41ff6a818c80e0071b15fde31155cdb5756c50a52f2dede5c6cc59c071f32
6
+ metadata.gz: 7d7b88eabfff7f7379290a4459f0335e7a832dd8959b46c52a18f60ba044feeacda46b95cd738618ffcba58c9981d7bd22efb65a3514d4fe8896b18052f1f0c0
7
+ data.tar.gz: 0e534ceb8ee52f6314386cf0c9286a7fa0a6b2d6263c7cd7d6b5dd01d1327ac61a256570fd60d0a5472efe6a1ea64daac144c8f2261f189c551631c09ab5133f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.1] - 2025-02-05
4
+
5
+ - Added `symbolized_all_keys` macro.
6
+
3
7
  ## [0.1.0] - 2025-02-03
4
8
 
5
9
  - 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.1"
5
+ end
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.0
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-03 00:00:00.000000000 Z
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: