Class: RakeFactory::Parameter

Inherits:
Object
  • Object
show all
Defined in:
lib/rake_factory/parameter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options) ⇒ Parameter

Returns a new instance of Parameter.



13
14
15
16
17
18
19
20
# 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

Instance Attribute Details

#configurableObject (readonly)

Returns the value of attribute configurable.



5
6
7
# File 'lib/rake_factory/parameter.rb', line 5

def configurable
  @configurable
end

#defaultObject

Returns the value of attribute default.



5
6
7
# File 'lib/rake_factory/parameter.rb', line 5

def default
  @default
end

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/rake_factory/parameter.rb', line 5

def name
  @name
end

#requiredObject (readonly)

Returns the value of attribute required.



5
6
7
# File 'lib/rake_factory/parameter.rb', line 5

def required
  @required
end

#transformObject (readonly)

Returns the value of attribute transform.



5
6
7
# File 'lib/rake_factory/parameter.rb', line 5

def transform
  @transform
end

Instance Method Details

#apply_default_to(instance) ⇒ Object



50
51
52
# File 'lib/rake_factory/parameter.rb', line 50

def apply_default_to(instance)
  instance.send(writer_method, @default) unless @default.nil?
end

#configurable?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/rake_factory/parameter.rb', line 58

def configurable?
  @configurable
end

#define_on(klass) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/rake_factory/parameter.rb', line 62

def dissatisfied_by?(instance)
  @required && read_from(instance).nil?
end

#instance_variableObject



30
31
32
# File 'lib/rake_factory/parameter.rb', line 30

def instance_variable
  "@#{name}"
end

#read_from(instance) ⇒ Object



54
55
56
# File 'lib/rake_factory/parameter.rb', line 54

def read_from(instance)
  instance.send(reader_method)
end

#reader_methodObject



26
27
28
# File 'lib/rake_factory/parameter.rb', line 26

def reader_method
  name
end

#satisfied_by?(instance) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/rake_factory/parameter.rb', line 66

def satisfied_by?(instance)
  !dissatisfied_by?(instance)
end

#writer_methodObject



22
23
24
# File 'lib/rake_factory/parameter.rb', line 22

def writer_method
  "#{name}="
end