ex_aequo_base 0.1.11 → 0.1.13

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: 3a09bafbf0482a72a5c127e0eda323e0c685981353c1e1ccd93c4fcc4ace34c3
4
- data.tar.gz: c0f572df0be6273763c45db5d163b15312d70eb6ec518baefa7f484955b3aa0d
3
+ metadata.gz: d21de70cefa087fd7eba3ab72336dd1e60d8d73428f2ab0ed1e98bebee8616f7
4
+ data.tar.gz: 4710b34f90a6a660dee16e6ceb34c35123380ef4a9e739e7a6b443432f4dfc49
5
5
  SHA512:
6
- metadata.gz: ac0ccd3d9370a9a0f5bf1862ed29dfc90d009c1c537034ca8f60b28a76e873da16fd01c3343b3d8a7042228600de63a7f1628f844676cb0cfa53fa6ee9caec2b
7
- data.tar.gz: af7e56c2823e7e40222afd136d10095768aac426bb177bf7ff36e4e106b0d2c47d41de2a677510ad002321426e45f8912c6d1e81d0f47e9f82d270c2c8632f5a
6
+ metadata.gz: 1f3e3b89c9334f333647534054679e0d2575a90c3fbe37f5d4731d2ff2b7aba82b22a6615f1cb623eba6c98f6baf4c75b44a6fb0eb13c119829f0cb923f522dd
7
+ data.tar.gz: 7aa7cb22f1214f05c1fca2f70b47c6f0e0657840d918c321afe38225d54361824c28be0e6aab208d71069a2635860732eccc2baadd1f6b3205d89bc12a66f351
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Base
5
+ module Enumerable
6
+ class ArrayHelper
7
+
8
+ def extract
9
+ fst = @slice.first
10
+ lst = @slice.last
11
+
12
+ @middle = @ary[@slice]
13
+ @head = @ary[0...fst]
14
+
15
+ @tail = tail_slice(lst, exclude_end: @slice.exclude_end?)
16
+ [@head, @middle, @tail].map(&Array)
17
+ end
18
+
19
+ def map_slice(&blk)
20
+ extract
21
+ @head + @middle.map(&blk) + @tail
22
+ end
23
+
24
+ private
25
+ def initialize(ary, slice:)
26
+ @ary = ary
27
+ @slice = make_slice(slice)
28
+ end
29
+
30
+ def tail_slice(n, exclude_end:)
31
+ return [] if n == -1 && !exclude_end
32
+ if exclude_end
33
+ @ary[n..-1]
34
+ else
35
+ @ary[n.succ..-1]
36
+ end
37
+ end
38
+
39
+ def make_slice(slice)
40
+ case slice
41
+ when Range
42
+ slice
43
+ when Integer
44
+ slice..slice
45
+ else
46
+ raise ArgumentError, "slice #{slice.inspect} must be a Range or Integer"
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ class Array
55
+
56
+ def self.to_proc = -> do Array it end
57
+
58
+ def extract_slice(slice) = ExAequo::Base::Enumerable::ArrayHelper.new(self, slice:).extract
59
+
60
+ def map_slice(slice, &blk) = ExAequo::Base::Enumerable::ArrayHelper.new(self, slice:).map_slice(&blk)
61
+
62
+ end
63
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -11,6 +11,10 @@ module ExAequo
11
11
  end
12
12
  end
13
13
 
14
+ def mapk(&blk)
15
+ maph { |k, v| [blk.(k), v] }
16
+ end
17
+
14
18
  def mapv(&blk)
15
19
  maph { |k, v| [k, blk.(v)] }
16
20
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ExAequo
4
4
  module Base
5
- VERSION = '0.1.11'
5
+ VERSION = '0.1.13'
6
6
  end
7
7
  end
8
8
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ex_aequo_base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -52,6 +52,7 @@ files:
52
52
  - lib/ex_aequo/base/colorize/colorizer.rb
53
53
  - lib/ex_aequo/base/constants.rb
54
54
  - lib/ex_aequo/base/enumerable.rb
55
+ - lib/ex_aequo/base/enumerable/array.rb
55
56
  - lib/ex_aequo/base/enumerable/hash.rb
56
57
  - lib/ex_aequo/base/enumerable/helper.rb
57
58
  - lib/ex_aequo/base/enumerable_helper.rb