class RakeFactory::Parameter
Attributes
configurable[R]
default[RW]
name[R]
required[R]
transform[R]
Public Class Methods
new(name, options)
click to toggle source
# File lib/rake_factory/parameter.rb, line 13 def initialize(name, options) @name = name @default = options[:default] @required = options[:required] || false @transform = options[:transform] || lambda { |x| x } @configurable = options[:configurable].nil? ? true : !!options[:configurable] end
Public Instance Methods
apply_default_to(instance)
click to toggle source
# File lib/rake_factory/parameter.rb, line 50 def apply_default_to(instance) instance.send(writer_method, @default) unless @default.nil? end
configurable?()
click to toggle source
# File lib/rake_factory/parameter.rb, line 58 def configurable? @configurable end
define_on(klass)
click to toggle source
# File lib/rake_factory/parameter.rb, line 34 def define_on(klass) parameter = self klass.class_eval do define_method parameter.writer_method do |value| instance_variable_set(parameter.instance_variable, value) end define_method parameter.reader_method do stored_value = instance_variable_get(parameter.instance_variable) resolved_value = Values.resolve(stored_value).evaluate([self]) transformed_value = parameter.transform.call(resolved_value) transformed_value end end end
dissatisfied_by?(instance)
click to toggle source
# File lib/rake_factory/parameter.rb, line 62 def dissatisfied_by?(instance) @required && read_from(instance).nil? end
instance_variable()
click to toggle source
# File lib/rake_factory/parameter.rb, line 30 def instance_variable "@#{name}" end
read_from(instance)
click to toggle source
# File lib/rake_factory/parameter.rb, line 54 def read_from(instance) instance.send(reader_method) end
reader_method()
click to toggle source
# File lib/rake_factory/parameter.rb, line 26 def reader_method name end
satisfied_by?(instance)
click to toggle source
# File lib/rake_factory/parameter.rb, line 66 def satisfied_by?(instance) !dissatisfied_by?(instance) end
writer_method()
click to toggle source
# File lib/rake_factory/parameter.rb, line 22 def writer_method "#{name}=" end