Class: Interactify::Contracts::Setup

Inherits:
Object
  • Object
show all
Defined in:
lib/interactify/contracts/setup.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context:, attrs:, filled:, should_delegate: true) ⇒ Setup

Returns a new instance of Setup.



14
15
16
17
18
19
# File 'lib/interactify/contracts/setup.rb', line 14

def initialize(context:, attrs:, filled:, should_delegate: true)
  @context = context
  @attrs = attrs
  @filled = filled
  @should_delegate = should_delegate
end

Class Method Details

.expects(context:, attrs:, filled:) ⇒ Object



6
7
8
# File 'lib/interactify/contracts/setup.rb', line 6

def self.expects(context:, attrs:, filled:)
  new(context:, attrs:, filled:).setup(:expects)
end

.promises(context:, attrs:, filled:, should_delegate:) ⇒ Object



10
11
12
# File 'lib/interactify/contracts/setup.rb', line 10

def self.promises(context:, attrs:, filled:, should_delegate:)
  new(context:, attrs:, filled:, should_delegate:).setup(:promises)
end

Instance Method Details

#setup(meth) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/interactify/contracts/setup.rb', line 21

def setup(meth)
  this = self

  @context.send(meth) do
    this.setup_attrs self
  end

  @context.delegate(*@attrs, to: :context) if @should_delegate
end

#setup_attrs(contract) ⇒ Object



31
32
33
34
35
36
# File 'lib/interactify/contracts/setup.rb', line 31

def setup_attrs(contract)
  @attrs.each do |attr|
    field = contract.required(attr)
    field.filled if @filled
  end
end