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