ex_aequo_base 0.1.12 → 0.1.14

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: e6d97deba4b11a23933ae70a5a9fa71014f642c22bd05e9f08f81e82551b7ea2
4
- data.tar.gz: 99246ab6909c6976d5f2025635c987e897f1e7dae36ab6f3e21b8ed9be2c12c8
3
+ metadata.gz: 1746c1c418c8045c824b5743d8e96f92b65df9ad7ec48f3a16a1f8f6968195d7
4
+ data.tar.gz: e119d80827e15cd36717a0b44f86c790afe3b1e874db7b886dd7aab77cdc1d8e
5
5
  SHA512:
6
- metadata.gz: ee51acf5852165238315c8684f4d5c8542e4f550782d02965347783ae38c7457a320716d9512e18f1b67685194a7707748fcd58561392d83768c46f46545c5e7
7
- data.tar.gz: 2fc4f4806e02f11f56ae8dad5b749de38d6522bbe212fb64fea97bd79f695cc8e18350c1a147bc0505a123cade6b755eafd27066bc80da85c3fd3420a65ea740
6
+ metadata.gz: 3afb8dc073f636eff99e555f38c3605a6e63f37e64b0b03f4b27f3114454c0d27b876902f5e014f59059427e424ca3c5cf363d78bcd0adbdb92d10f08e7a106c
7
+ data.tar.gz: c6bf9c7f3f1fd1c8dd4de097bee04290578b03e1df8d797e247bb67d603fdd566b3832d821d06353fc955b49a4ddcd314c85101ea8143c65cacaff6edb65306d
@@ -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
@@ -10,21 +10,27 @@ module ExAequo
10
10
  '!' => _not,
11
11
  }
12
12
 
13
-
14
13
  def mk_fun(fn_desc)
15
14
  case fn_desc
16
15
  in String
17
16
  mk_op(fn_desc)
18
17
  in Symbol
19
- -> { it.send(fn_desc) }
18
+ -> { it.send(fn_desc) }
20
19
  in Array
21
- -> { it.send(*fn_desc) }
20
+ -> { it.send(*fn_desc) }
22
21
  in _
23
22
  fn_desc.to_proc
24
23
  end
25
24
  # TODO: Allow for other fn_desc then Array and Symbol
26
25
  end
27
26
 
27
+ def mk_fun_or(fn_desc=nil, &blk)
28
+ raise ArgumentError, "symbolic fn_desc and block are not allowed" if !fn_desc.nil? && blk
29
+ raise ArgumentError, "symbolic fn_desc or a block must be provided" unless !fn_desc.nil? || blk
30
+
31
+ blk ? blk : mk_fun(fn_desc)
32
+ end
33
+
28
34
  def mk_fun_pipeline(fn_descs)
29
35
  fns = fn_descs.map { mk_fun it }
30
36
  -> do
@@ -32,6 +38,19 @@ module ExAequo
32
38
  end
33
39
  end
34
40
 
41
+ def mk_fun_pipeline_and(fn_descs = [], &blk)
42
+ if blk
43
+ fns = fn_descs.map { mk_fun it }
44
+ -> do
45
+ val = fns.inject(it) { |acc, f| f.(acc) }
46
+ blk.(val)
47
+ end
48
+ else
49
+ raise ArgumentError, "need a blok or a fn_desc" if fn_descs.empty?
50
+ mk_fun_pipeline(fn_descs)
51
+ end
52
+ end
53
+
35
54
  def mk_op(op)
36
55
  Operators.fetch(op) { raise ArgumentError, "undefined operator #{op.inspect}" }
37
56
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ExAequo
4
4
  module Base
5
- VERSION = '0.1.12'
5
+ VERSION = '0.1.14'
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.12
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober