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