plugs 0.3.0 → 0.4.0

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/lib/lazy.rb +19 -0
  3. data/lib/plugs.rb +9 -4
  4. data/lib/version.rb +1 -1
  5. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 591e9658be2f12d42b001438cf1769587613e0faee11b711802729c1954446a8
4
- data.tar.gz: ac8b3e12b9f4219980c53c1dac2e9a0c9412ebe637669ce7a0bee9741e06f4fb
3
+ metadata.gz: a364513a370f271f6348a2ef3299566e5c6f85739913577ba7ae40bd3a3aa9cd
4
+ data.tar.gz: ae98fbbb02b2c391c8562e5fd6634267d6ad7a6424920da9dd3b7e9aff3be703
5
5
  SHA512:
6
- metadata.gz: 3967854087c6bfebdd66ab3fb09f3042dabeae4797ab0ed5a532b34c04a9b3ea5db6bdc70a1b71950a04e240c42e0b50d1e3f42ae29faae597af0980b5f8e1e1
7
- data.tar.gz: 127f2b45b30a81ce320b8c73755dcbbfef39d4acfa4f24671764ef155f167958dade67c3836c87a92d74273576be34b1d6833c2169cfce8c1cafdf15ae0ac99a
6
+ metadata.gz: 1b63642c28bf6c1983333c262d254c405d79104b4d9b6bb1776ee3732ef8233b1c6369af4384176a487fd45573a0487576fb2447e07c9ff1233b6543d9d133ff
7
+ data.tar.gz: bf3733efa4f00a1f6b27d4a60d832251c82c9c2a998344274a72e4b593a9fdd89b40e19cf5e3caf6a93bd0a22a0b4bdac4115eda40359847a1989fc3b0d6a43c
data/lib/lazy.rb ADDED
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Plugs
4
+ class Lazy
5
+ def self.unwrap(value)
6
+ value.is_a?(self) ? value.call : value
7
+ end
8
+
9
+ def initialize(&block)
10
+ @proc = block
11
+ end
12
+
13
+ def call
14
+ return @call if defined?(@call)
15
+
16
+ @call = @proc.call
17
+ end
18
+ end
19
+ end
data/lib/plugs.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'plug'
4
4
  require_relative 'sub_selector'
5
+ require_relative 'lazy'
5
6
 
6
7
  module Plugs
7
8
  attr_reader :plugs
@@ -16,20 +17,20 @@ module Plugs
16
17
  end
17
18
 
18
19
  def +(b)
19
- @plugs.merge!(b.plugs) { |key, a_values, b_values| [*a_values, *b_values] }
20
+ @plugs.merge!(b.plugs) { |_key, a_values, b_values| [*a_values, *b_values] }
20
21
 
21
22
  self
22
23
  end
23
24
 
24
25
  def to_a
25
- plugs.values.flatten.map(&:result)
26
+ plugs.values.flatten.map(&:result).map { |value| Lazy.unwrap(value) }
26
27
  end
27
28
 
28
29
  def to_h
29
30
  plugs.values.each_with_object({}) do |values, hash|
30
31
  values.each do |plug|
31
32
  hash[plug.key] ||= []
32
- hash[plug.key] << plug.result
33
+ hash[plug.key] << Lazy.unwrap(plug.result)
33
34
  end
34
35
  end
35
36
  end
@@ -54,12 +55,16 @@ module Plugs
54
55
  nil
55
56
  end
56
57
 
58
+ def lazy(&block)
59
+ Lazy.new(&block)
60
+ end
61
+
57
62
  def [](*keys)
58
63
  new(plugs: SubSelector.sub_select(plugs:, keys:), keys:)
59
64
  end
60
65
 
61
66
  def to_a
62
- plugs.values.flatten.map(&:result)
67
+ plugs.values.flatten.map(&:result).map { |value| Lazy.unwrap(value) }
63
68
  end
64
69
 
65
70
  def plugs
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Plugs
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plugs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi
@@ -18,6 +18,7 @@ executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
+ - lib/lazy.rb
21
22
  - lib/plug.rb
22
23
  - lib/plugs.rb
23
24
  - lib/refinements.rb