class BusinessFlow::DSL::Field
Helper class to manage logic around adding fields
Attributes
field[R]
getter[R]
setter[R]
Public Class Methods
eval_method(klass, name, str)
click to toggle source
# File lib/business_flow/dsl.rb, line 349 def self.eval_method(klass, name, str) return if klass.method_defined?(name) || klass.private_method_defined?(name) unsafe_eval_method(klass, name, str) end
new(field)
click to toggle source
# File lib/business_flow/dsl.rb, line 332 def initialize(field) @field = field # For proc bindings. ivar_name = instance_variable_name @getter = ivar_name @setter = self.class.setter_factory(field, ivar_name) end
setter_factory(field, ivar_name)
click to toggle source
# File lib/business_flow/dsl.rb, line 360 def self.setter_factory(field, ivar_name) <<-SETTER #{ivar_name} = new_value SETTER end
unsafe_eval_method(klass, name, str)
click to toggle source
# File lib/business_flow/dsl.rb, line 355 def self.unsafe_eval_method(klass, name, str) body = ["private def #{name}", str, 'end'].join("\n") klass.class_eval body, __FILE__, __LINE__ end
Public Instance Methods
add_to(klass)
click to toggle source
# File lib/business_flow/dsl.rb, line 340 def add_to(klass) Field.eval_method(klass, field, getter) Field.eval_method(klass, setter_name, setter) end
name()
click to toggle source
# File lib/business_flow/dsl.rb, line 345 def name field end
Private Instance Methods
instance_variable_name()
click to toggle source
# File lib/business_flow/dsl.rb, line 374 def instance_variable_name @instance_variable_name ||= "@#{field}" end
setter_name()
click to toggle source
# File lib/business_flow/dsl.rb, line 370 def setter_name @setter_name ||= "#{field}=(new_value)" end