Class Fixjour::Generator

  1. lib/fixjour/generator.rb (view online)
Parent: Object

This generates a new instance of a model object for the new_[model] method.

Methods

public class

  1. new

public instance

  1. args
  2. call

Attributes

block [R]
klass [R]

Public class methods

new (klass, block)
[show source]
# File lib/fixjour/generator.rb, line 7
    def initialize(klass, block)
      @klass, @block = klass, block
    end

Public instance methods

args (overrides)
[show source]
# File lib/fixjour/generator.rb, line 20
    def args(overrides)
      case block.arity
      when 1 then [MergingProxy.new(klass, overrides)]
      when 2 then [MergingProxy.new(klass, overrides), overrides]
      end
    end
call (context, overrides={})
[show source]
# File lib/fixjour/generator.rb, line 11
    def call(context, overrides={})
      overrides = OverridesHash.new(overrides)
      result = block.bind(context).call(*args(overrides))
      case result
      when Hash then klass.new(result.merge(overrides))
      else result
      end
    end