dorian-to_struct 0.4.2 → 0.5.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: f4b1a2c571b4d37a72ee55b33edd7984afdeec58e907cb854b6efd3ac6c44ea2
4
- data.tar.gz: 764f762e68f4b2f98e73a9e087a76958874143e8e1ae9db429d929fcfdad24c4
3
+ metadata.gz: b1b7fed4587dddb8df16482d9d812ae7656a0632bcbe0e6b04f71c781b391be7
4
+ data.tar.gz: 18d380b30f9cdf56be110ea61a2d0cc734ff283f05201a90c26ad12e738900ed
5
5
  SHA512:
6
- metadata.gz: ed1019db245750a950f3f69f291deae3fe26b1d45b9287dd1f35dd110ca6c5dbefe6ace1ce6f786eaf3116a2df2a07a4758066de532599617c8339b3d55c73f3
7
- data.tar.gz: 49e77fc65a0fa57c17d3b3cad31a4ff5051921dace0d71d10baf2699074e29b5dcf313d323a4ffc94f446f6744b2915bdc99873bf98fd3464ee73ebdeb10d226
6
+ metadata.gz: 3555827f5e2c1b8f51b8ffd3ad453c18614a1d1a67ed9f38db7ad52fe39b8b2392199fa865b2277ff15d4fc2fd239b32e001f8fb9289bc93b1e0dca9f13fa55a
7
+ data.tar.gz: 064bd8a1eff196e75f163862fa3c7e1cceb758eda8bc9c183929cc43cd3455a4eb7a5e5463d638459bd2958f6f2b1a0b3bb3a9a5c3e8eadf255f5faf288ca8cd
@@ -0,0 +1,47 @@
1
+ class Array
2
+ # Returns a new struct with the same key/value pairs
3
+ #
4
+ # users = [{ first_name: "Dorian", last_name: "Marié" }].to_struct
5
+ # users.first.first_name # => "Dorian"
6
+ # users.first.birthdate # => NoMethodError: undefined method `birthdate' for <struct...>
7
+ #
8
+ def to_struct
9
+ map { |item| item.respond_to?(:to_struct) ? item.to_struct : item }
10
+ end
11
+
12
+ # Returns a new struct with the same key/value pairs
13
+ #
14
+ # users = [{ name: { first: "Dorian", last: "Marié" }].to_struct
15
+ # users.first.name.first # => "Dorian"
16
+ #
17
+ def to_deep_struct
18
+ map do |item|
19
+ item.respond_to?(:to_deep_struct) ? item.to_deep_struct : item
20
+ end
21
+ end
22
+ end
23
+
24
+ class Hash
25
+ # Returns a new struct with the same key/value pairs
26
+ #
27
+ # user = { first_name: "Dorian", last_name: "Marié" }.to_struct
28
+ # user.first_name # => "Dorian"
29
+ # user.birthdate # => NoMethodError: undefined method `birthdate' for <struct...>
30
+ #
31
+ def to_struct
32
+ Struct.new(*keys.map(&:to_sym)).new(*values)
33
+ end
34
+
35
+ # Returns a new struct with the same key/value pairs
36
+ #
37
+ # user = { name: "Dorian", events: [{ name: "Party" }] }.to_deep_struct
38
+ # user.events.first.name # => "Party"
39
+ #
40
+ def to_deep_struct
41
+ Struct.new(*keys.map(&:to_sym)).new(
42
+ *values.map do |value|
43
+ value.respond_to?(:to_deep_struct) ? value.to_deep_struct : value
44
+ end
45
+ )
46
+ end
47
+ end
@@ -1,49 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Array
4
- # Returns a new struct with the same key/value pairs
5
- #
6
- # users = [{ first_name: "Dorian", last_name: "Marié" }].to_struct
7
- # users.first.first_name # => "Dorian"
8
- # users.first.birthdate # => NoMethodError: undefined method `birthdate' for <struct...>
9
- #
10
- def to_struct
11
- map { |item| item.respond_to?(:to_struct) ? item.to_struct : item }
12
- end
13
-
14
- # Returns a new struct with the same key/value pairs
15
- #
16
- # users = [{ name: { first: "Dorian", last: "Marié" }].to_struct
17
- # users.first.name.first # => "Dorian"
18
- #
19
- def to_deep_struct
20
- map do |item|
21
- item.respond_to?(:to_deep_struct) ? item.to_deep_struct : item
22
- end
23
- end
24
- end
25
-
26
- class Hash
27
- # Returns a new struct with the same key/value pairs
28
- #
29
- # user = { first_name: "Dorian", last_name: "Marié" }.to_struct
30
- # user.first_name # => "Dorian"
31
- # user.birthdate # => NoMethodError: undefined method `birthdate' for <struct...>
32
- #
33
- def to_struct
34
- Struct.new(*keys.map(&:to_sym)).new(*values)
35
- end
36
-
37
- # Returns a new struct with the same key/value pairs
38
- #
39
- # user = { name: "Dorian", events: [{ name: "Party" }] }.to_deep_struct
40
- # user.events.first.name # => "Party"
41
- #
42
- def to_deep_struct
43
- Struct.new(*keys.map(&:to_sym)).new(
44
- *values.map do |value|
45
- value.respond_to?(:to_deep_struct) ? value.to_deep_struct : value
46
- end
47
- )
48
- end
49
- end
3
+ require_relative "dorian/to_struct"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-to_struct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-18 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-08-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dorian-arguments
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: makes structs
14
28
  email: dorian@dorianmarie.com
15
29
  executables: []
@@ -17,6 +31,7 @@ extensions: []
17
31
  extra_rdoc_files: []
18
32
  files:
19
33
  - lib/dorian-to_struct.rb
34
+ - lib/dorian/to_struct.rb
20
35
  homepage: https://github.com/dorianmariecom/dorian-to_struct
21
36
  licenses:
22
37
  - MIT