bountiful_blocks 1.1.0 → 1.1.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +2 -1
- data/lib/bountiful_blocks/multiblock.rb +17 -3
- data/lib/bountiful_blocks/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67aa1f4e399b6e73e1b336b1c5c1bb93d11dd32f661fcaaa5f9c4436285dc75d
|
4
|
+
data.tar.gz: bf6ab6419e32e4bc6cab4859654afce4c968a5e1505469a8dc7cd626ab037970
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5f002cf969382785b756b1e04e62ca870b0d941a824875619666733ce0f708b4e6574d8c24122f582669a579dad0e82452db6381dc7c216be78cd45ffb93ace
|
7
|
+
data.tar.gz: f808fb510faceaf5c1e2aee72ac641cc34e985dca9919d5b7242500f33ab0a1fc3fa52ded5494ab4aa5a9b00a0bde010da6959930409b1cd4572745955d8b4ab
|
data/CHANGELOG.md
CHANGED
@@ -8,6 +8,17 @@
|
|
8
8
|
### Bug fixes
|
9
9
|
)-->
|
10
10
|
|
11
|
+
## 1.1.1 2023-10-12
|
12
|
+
|
13
|
+
### New features
|
14
|
+
|
15
|
+
- Added `given_blocks!` utility method.
|
16
|
+
|
17
|
+
### Bug fixes
|
18
|
+
|
19
|
+
- The `given!` utility method was never filled during instantiation, now it works as described.
|
20
|
+
- Trying to invoke a block that was not passed now produces `NoMethodError` instead of `FrozenError`.
|
21
|
+
|
11
22
|
## 1.1.0 2023-09-07
|
12
23
|
|
13
24
|
### New features
|
data/README.md
CHANGED
@@ -105,7 +105,8 @@ To avoid conflicts, all utility method names will end in either `!`, `?`, or `=`
|
|
105
105
|
- `raw!` returns the value returned by the block, which can be useful to allow a block to work both as a regular block and a multiblock.
|
106
106
|
- `given?(name)` returns `true` if a block named `name` was provided.
|
107
107
|
- `given!` returns the names of all the provided blocks.
|
108
|
-
- `
|
108
|
+
- `given_blocks!` returns all the provided blocks in a hash indexed by their names.
|
109
|
+
- `call_all!` returns a Hash that maps all block names to their results. You can provide arguments to `call_all!` and they will be forwarded in turn to all blocks. Notice that since multiblocks are frozen, `call_all!` can't cache the Hash and must create a new one on every invocation.
|
109
110
|
|
110
111
|
## Version numbers
|
111
112
|
|
@@ -7,7 +7,13 @@ module BountifulBlocks
|
|
7
7
|
|
8
8
|
raise ArgumentError, "Block required for #{missing_blocks.join ', '}" unless missing_blocks.empty?
|
9
9
|
|
10
|
+
singleton_class.class_exec do
|
11
|
+
undef_method :method_missing
|
12
|
+
undef_method :respond_to_missing?
|
13
|
+
end
|
14
|
+
|
10
15
|
given!.freeze
|
16
|
+
given_blocks!.freeze
|
11
17
|
freeze
|
12
18
|
end
|
13
19
|
|
@@ -16,6 +22,8 @@ module BountifulBlocks
|
|
16
22
|
return super if name.end_with? '!', '?', '='
|
17
23
|
|
18
24
|
define_singleton_method name, &block
|
25
|
+
given! << name
|
26
|
+
given_blocks![name] = block
|
19
27
|
|
20
28
|
nil
|
21
29
|
end
|
@@ -27,7 +35,7 @@ module BountifulBlocks
|
|
27
35
|
end
|
28
36
|
|
29
37
|
def given? name
|
30
|
-
|
38
|
+
given_blocks!.key? name
|
31
39
|
end
|
32
40
|
|
33
41
|
def given!
|
@@ -36,12 +44,18 @@ module BountifulBlocks
|
|
36
44
|
@given
|
37
45
|
end
|
38
46
|
|
47
|
+
def given_blocks!
|
48
|
+
@given_blocks = {} unless defined?(@given_blocks)
|
49
|
+
|
50
|
+
@given_blocks
|
51
|
+
end
|
52
|
+
|
39
53
|
def raw!
|
40
54
|
@raw
|
41
55
|
end
|
42
56
|
|
43
|
-
def call_all!
|
44
|
-
|
57
|
+
def call_all!(*args, **kwargs, &block)
|
58
|
+
given_blocks!.transform_values { |given_block| given_block.call(*args, **kwargs, &block) }
|
45
59
|
end
|
46
60
|
end
|
47
61
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bountiful_blocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Moku S.r.l.
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-10-12 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple and idiomatic way to pass multiple blocks to a method.
|
15
15
|
email:
|
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
requirements: []
|
55
|
-
rubygems_version: 3.4.
|
55
|
+
rubygems_version: 3.4.10
|
56
56
|
signing_key:
|
57
57
|
specification_version: 4
|
58
58
|
summary: A simple and idiomatic way to pass multiple blocks to a method.
|