eitil 1.1.33 → 1.1.34

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: 36321fc1d4a6ef1bc8427a54f987b7c659ca6c2d129a4b4ffa32d65292c6e55b
4
- data.tar.gz: 1096c2f9c22382044a248d118680d2882df5886b1d8a58a374bd840d01070fd8
3
+ metadata.gz: cfe9b499c92cf50def38b6ff67a2aeec1966bc6a05d6cba5e4b7d8dfefb38dfd
4
+ data.tar.gz: 116a83f8965db21f455c5e36b8f253023b550f4c0ead34ecc14eb5ed7e04e894
5
5
  SHA512:
6
- metadata.gz: 33b6da41a3963ef05207d6bfb6937f3ec28cbaa9a842d3cc7b22a4c3bcafe1b0abdaddb0d291fb121bc033b58b35ce455c101eb086a11ce7266c9a6e058f1e9f
7
- data.tar.gz: 6e7438d46132b2efa040221a02129ba516945a1f2256f7235ad910847ac0c724841f82a41e7dfb2b40753d28bee54c6cc9b44040640131784cd9ac3431f36aec
6
+ metadata.gz: 86bf0a0faaaac7509647519dd200d767063bcab69759a8a9ebf36c0be406bae574923ebb3618113c7e3fb22228d71eb3e2970b998e6989a38ab5b9c49c12a2bc
7
+ data.tar.gz: 506b2a290c2323ff6c43453205d461ccb89c17a81dd08ff25f09e34a4826e4ccefa3909dff47bbf6e504ce44cb82059c89be40569f4038ac524c8f1317237c71
data/eitil_core/README.md CHANGED
@@ -181,6 +181,21 @@ require "eitil_core/array"
181
181
 
182
182
  ```
183
183
 
184
+ ```ruby
185
+ # require "eitil_core/array/map_strings"
186
+
187
+ map_strings(&block)
188
+ # transforms all strings in infinite recursion by yielding the given block, also works for strings contained in hashes.
189
+ # call as: ["hey", ["hi", {a: "ho"}]].map_strings! { |str| str.upcase }
190
+ # => ["HEY", ["HI", {a: "HO"}]]
191
+ ```
192
+ ```ruby
193
+ # require "eitil_core/array/map_strings"
194
+
195
+ map_strings!(&block)
196
+ # bang variant of .map_strings, which recursively modifies all objects it is called on.
197
+ ```
198
+
184
199
  ```ruby
185
200
  # require "eitil_core/array/slice_hashes"
186
201
 
@@ -355,6 +370,20 @@ auto_dig(_hash = self, _key)
355
370
  # => 3
356
371
  ```
357
372
 
373
+ ```ruby
374
+ # require "eitil_core/hash/transform_string_values"
375
+
376
+ transform_string_values(&block)
377
+ # transforms all strings in infinite recursion by yielding the given block, also works for strings contained in arrays.
378
+ # call as: {a: "hey", b: {c: "hi", d: ["ho"]}}.transform_string_values! { |str| str.upcase }
379
+ # => {a: "HEY", b: {c: "HI", d: ["HO"]}}
380
+ ```
381
+ ```ruby
382
+ # require "eitil_core/hash/transform_string_values"
383
+
384
+ transform_string_values!(&block)
385
+ # bang variant of .transform_string_values, which recursively modifies all objects it is called on.
386
+ ```
358
387
 
359
388
  ## Lookups
360
389
 
@@ -1,2 +1,3 @@
1
1
 
2
- require "eitil_core/array/slice_hashes"
2
+ require "eitil_core/array/slice_hashes"
3
+ require "eitil_core/array/map_strings"
@@ -0,0 +1,33 @@
1
+
2
+ # require "eitil_core/array/map_strings"
3
+
4
+ require "eitil_core/hash/transform_string_values"
5
+
6
+ class Array
7
+
8
+ def map_strings!(&block)
9
+ map! do |item|
10
+
11
+ if item.class == String
12
+ yield item
13
+
14
+ elsif item.class == Hash
15
+ item.transform_string_values!(&block)
16
+
17
+ elsif item.class == Array
18
+ item.map_strings!(&block)
19
+
20
+ else
21
+ item
22
+
23
+ end
24
+ end
25
+
26
+ self
27
+ end
28
+
29
+ def map_strings(&block)
30
+ deep_dup.map_strings!(&block)
31
+ end
32
+
33
+ end
@@ -1,2 +1,3 @@
1
1
 
2
2
  require "eitil_core/hash/auto_dig"
3
+ require "eitil_core/hash/transform_string_values"
@@ -0,0 +1,33 @@
1
+
2
+ # require "eitil_core/hash/transform_string_values"
3
+
4
+ require "eitil_core/array/map_strings"
5
+
6
+ class Hash
7
+
8
+ def transform_string_values!(&block)
9
+ transform_values! do |value|
10
+
11
+ if value.class == String
12
+ yield value
13
+
14
+ elsif value.class == Hash
15
+ value.transform_string_values!(&block)
16
+
17
+ elsif value.class == Array
18
+ value.map_strings!(&block)
19
+
20
+ else
21
+ value
22
+
23
+ end
24
+ end
25
+
26
+ self
27
+ end
28
+
29
+ def transform_string_values(&block)
30
+ deep_dup.transform_string_values!(&block)
31
+ end
32
+
33
+ end
data/lib/eitil/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Eitil
2
2
 
3
- VERSION = '1.1.33'
3
+ VERSION = '1.1.34'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eitil
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.33
4
+ version: 1.1.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jurriaan Schrofer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-19 00:00:00.000000000 Z
11
+ date: 2021-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -103,6 +103,7 @@ files:
103
103
  - eitil_core/lib/eitil_core/argument_helpers/args_to_ivars.rb
104
104
  - eitil_core/lib/eitil_core/argument_helpers/args_to_ivars_bang.rb
105
105
  - eitil_core/lib/eitil_core/array.rb
106
+ - eitil_core/lib/eitil_core/array/map_strings.rb
106
107
  - eitil_core/lib/eitil_core/array/slice_hashes.rb
107
108
  - eitil_core/lib/eitil_core/concerns.rb
108
109
  - eitil_core/lib/eitil_core/concerns/include_concerns_of.rb
@@ -119,6 +120,7 @@ files:
119
120
  - eitil_core/lib/eitil_core/formatters/sql.rb
120
121
  - eitil_core/lib/eitil_core/hash.rb
121
122
  - eitil_core/lib/eitil_core/hash/auto_dig.rb
123
+ - eitil_core/lib/eitil_core/hash/transform_string_values.rb
122
124
  - eitil_core/lib/eitil_core/lookups.rb
123
125
  - eitil_core/lib/eitil_core/lookups/all_methods.rb
124
126
  - eitil_core/lib/eitil_core/lookups/gem_path.rb