Module: Plugs

Defined in:
lib/lazy.rb,
lib/plug.rb,
lib/plugs.rb,
lib/version.rb,
lib/refinements.rb,
lib/sub_selector.rb

Defined Under Namespace

Modules: ClassMethods, Refinements, SubSelector Classes: Lazy, Plug

Constant Summary collapse

VERSION =
'0.4.0'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#plugsObject (readonly)

Returns the value of attribute plugs.



8
9
10
# File 'lib/plugs.rb', line 8

def plugs
  @plugs
end

Class Method Details

.included(base) ⇒ Object



38
39
40
# File 'lib/plugs.rb', line 38

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#+(b) ⇒ Object



19
20
21
22
23
# File 'lib/plugs.rb', line 19

def +(b)
  @plugs.merge!(b.plugs) { |_key, a_values, b_values| [*a_values, *b_values] }

  self
end

#[](*keys) ⇒ Object



15
16
17
# File 'lib/plugs.rb', line 15

def [](*keys)
  self.class.new(plugs: SubSelector.sub_select(plugs:, keys:), keys:)
end

#initialize(plugs:, keys:) ⇒ Object



10
11
12
13
# File 'lib/plugs.rb', line 10

def initialize(plugs:, keys:)
  @plugs = plugs
  @keys = keys
end

#to_aObject



25
26
27
# File 'lib/plugs.rb', line 25

def to_a
  plugs.values.flatten.map(&:result).map { |value| Lazy.unwrap(value) }
end

#to_hObject



29
30
31
32
33
34
35
36
# File 'lib/plugs.rb', line 29

def to_h
  plugs.values.each_with_object({}) do |values, hash|
    values.each do |plug|
      hash[plug.key] ||= []
      hash[plug.key] << Lazy.unwrap(plug.result)
    end
  end
end