Module: ArrayFu::GenerateMutators

Extended by:
GenerateMutators
Included in:
GenerateMutators
Defined in:
lib/arrayfu/generate_mutators.rb

Instance Method Summary collapse

Instance Method Details

#create_using(builder) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/arrayfu/generate_mutators.rb', line 5

def create_using(builder)
  Module.new do
    builder.each_mutator do |mutator|
      define_method(mutator.name) do|value|
        array_var = instance_variable_get(builder.variable_name)
        continue_add = true

        builder.each_constraint do |constraint| 
          continue_add &= constraint.apply_to(value)
        end

        return unless continue_add

        if mutator.block
          mutator.run(self, value)
        else
          array_var.push(value)
        end
      end
    end
  end
end