class Composable::Core::ComposableDSL::Composable

Attributes

attribute[R]
conditions[R]
mapping[R]

Public Class Methods

new(attribute) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 101
def initialize(attribute)
  @attribute = attribute
  @mapping = {}
  @conditions = Conditions.new
end

Public Instance Methods

evaluate(**options, &block) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 112
def evaluate(**options, &block)
  conditions.merge(**options)

  instance_eval(&block) if block
end
initialize_copy(original_object) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 107
def initialize_copy(original_object)
  @mapping = original_object.mapping.deep_dup
  @conditions = original_object.conditions.deep_dup
end
sync_attributes(form, record, reverse: false) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 118
def sync_attributes(form, record, reverse: false)
  mapping.each_value do |instance|
    instance.sync(form, record, reverse: reverse)
  end
end
valid?(...) click to toggle source
# File lib/composable/core/composable_dsl.rb, line 124
def valid?(...)
  conditions.valid?(...)
end

Private Instance Methods

sync(*args, to: nil, **options) click to toggle source

DSL method

# File lib/composable/core/composable_dsl.rb, line 131
def sync(*args, to: nil, **options)
  args.extract_options!

  args.compact.uniq.each do |name|
    mapping[name.to_sym] ||= Sync.new(from: name)
    mapping[name.to_sym].merge(to: (to || name), **options)
  end
end