lib/makers/proxy.rb in makers-0.1.3 vs lib/makers/proxy.rb in makers-0.2.0

- old
+ new

@@ -1,52 +1,13 @@ module Makers class Proxy - include Callbacks - def initialize(maker, &block) - @maker = maker - @attributes = [] - @sequences = {} + def initialize(&block) instance_eval &block end - def attributes - {}.tap do |hash| - if @maker.parent - hash.merge! @maker.parent.proxy.attributes - end - @attributes.each do |name| - hash[name] = send(name) - end - end - end - - def sequence(name, &block) - @attributes << name - @sequences[name] = Sequence.new(&block) - class_eval do - define_method(name) { @sequences[name] } - end - end - - def method_missing(name, *args, &block) - unless name == :maker - options = args.extract_options! - strategy = options.delete(:strategy) || :build - if block_given? - logic = block - elsif maker = Makers.definitions.find(name) rescue nil - logic = -> { maker.send(strategy, options) } - elsif maker = Makers.definitions.find(name.to_s.singularize.to_sym) rescue nil - logic = -> { maker.send(strategy, (args.first || 1), options) } - elsif args.any? - logic = -> { args.first } - end - if defined? logic - @attributes.send (block_given? ? :push : :unshift), name - class_eval { define_method(name, logic) } - end - end + def maker(*args, &block) + DSL::Maker.new *args, &block end end end