Class: BusinessFlow::DSL::Field
- Inherits:
-
Object
- Object
- BusinessFlow::DSL::Field
- Defined in:
- lib/business_flow/dsl.rb
Overview
Helper class to manage logic around adding fields
Class Method Summary collapse
- .eval_method(klass, name, str) ⇒ Object
- .setter_factory(_field, ivar_name) ⇒ Object
- .unsafe_eval_method(klass, name, str) ⇒ Object
Instance Method Summary collapse
- #add_to(klass) ⇒ Object
-
#initialize(field) ⇒ Field
constructor
A new instance of Field.
- #name ⇒ Object
Constructor Details
#initialize(field) ⇒ Field
Returns a new instance of Field.
346 347 348 349 350 351 352 |
# File 'lib/business_flow/dsl.rb', line 346 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 |
Class Method Details
.eval_method(klass, name, str) ⇒ Object
363 364 365 366 367 |
# File 'lib/business_flow/dsl.rb', line 363 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 |
.setter_factory(_field, ivar_name) ⇒ Object
374 375 376 377 378 |
# File 'lib/business_flow/dsl.rb', line 374 def self.setter_factory(_field, ivar_name) " \#{ivar_name} = new_value\n SETTER\nend\n" |
.unsafe_eval_method(klass, name, str) ⇒ Object
369 370 371 372 |
# File 'lib/business_flow/dsl.rb', line 369 def self.unsafe_eval_method(klass, name, str) body = ["private def #{name}", str, 'end'].join("\n") klass.class_eval body, __FILE__, __LINE__ end |
Instance Method Details
#add_to(klass) ⇒ Object
354 355 356 357 |
# File 'lib/business_flow/dsl.rb', line 354 def add_to(klass) Field.eval_method(klass, field, getter) Field.eval_method(klass, setter_name, setter) end |
#name ⇒ Object
359 360 361 |
# File 'lib/business_flow/dsl.rb', line 359 def name field end |