Module: Plugs::ClassMethods

Defined in:
lib/plugs.rb

Instance Method Summary collapse

Instance Method Details

#[](*keys) ⇒ Object



62
63
64
# File 'lib/plugs.rb', line 62

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

#lazy(&block) ⇒ Object



58
59
60
# File 'lib/plugs.rb', line 58

def lazy(&block)
  Lazy.new(&block)
end

#plug(key, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/plugs.rb', line 43

def plug(key, &block)
  plug = Plug.new(key:, &block)

  plugs[key] ||= []
  plugs[key] << plug
  plug_stack << plug

  plug.result

  plug_stack.pop
  plug_stack.last.children << plug if plug_stack.last

  nil
end

#plug_stackObject



75
76
77
78
# File 'lib/plugs.rb', line 75

def plug_stack
  @plug_stack ||= []
  @plug_stack
end

#plugsObject



70
71
72
73
# File 'lib/plugs.rb', line 70

def plugs
  @plugs ||= {}
  @plugs
end

#to_aObject



66
67
68
# File 'lib/plugs.rb', line 66

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