class Synchronisable::DSL::Macro::Expression
Serves as storage and provides lazy evaluation for expression. You can override attributes in subclasses, for example you can change the default value.
@api private
@see Synchronisable::DSL::Macro
@see Synchronisable::DSL::Attribute @see Synchronisable::DSL::Method
Attributes
default[R]
source[R]
Public Class Methods
new(options)
click to toggle source
# File lib/synchronisable/dsl/macro/expression.rb, line 16 def initialize(options) @default = options[:default] end
Public Instance Methods
handle(args, &block)
click to toggle source
# File lib/synchronisable/dsl/macro/expression.rb, line 20 def handle(args, &block) has_value = block || args.present? has_value ? save(args, block) : value end
Protected Instance Methods
transform(arg)
click to toggle source
# File lib/synchronisable/dsl/macro/expression.rb, line 27 def transform(arg) evaluate(arg) end
Private Instance Methods
evaluate(arg)
click to toggle source
# File lib/synchronisable/dsl/macro/expression.rb, line 45 def evaluate(arg) arg.try(:call) || arg end
save(args, block)
click to toggle source
# File lib/synchronisable/dsl/macro/expression.rb, line 33 def save(args, block) if args.present? @source = args.count > 1 ? args : args.first elsif block @source = block end end
value()
click to toggle source
# File lib/synchronisable/dsl/macro/expression.rb, line 41 def value source || default end