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