class Composable::Core::ComposableDSL::Composable::Condition

Attributes

callable[R]
condition[R]
statement[R]

Public Class Methods

new(statement, condition) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 193
def initialize(statement, condition)
  @statement = statement.to_sym
  @condition = condition
  @callable = make_lambda
end

Public Instance Methods

call(form, record) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 199
def call(form, record)
  callable.call(form, record).eql?(statement == :if)
end

Private Instance Methods

make_lambda() click to toggle source
# File lib/composable/core/composable_dsl.rb, line 205
def make_lambda
  case condition
  when Symbol
    ->(form, _record) { form.send(condition) }
  when ::Proc
    lambda { |form, record|
      form.instance_exec(*[record][0...condition.arity], &condition)
    }
  else
    ->(*) { true }
  end
end