Sha256: e91fdfc565070835f0591a1e347faff789736953871f8b209c7a82e28ea1a050

Contents?: true

Size: 792 Bytes

Versions: 3

Compression:

Stored size: 792 Bytes

Contents

module Fabricators
  class Definitions

    def initialize
      reset
    end

    def reset
      @fabricators = {}
    end

    def fabricator(name, options={}, &block)
      fabricator = Fabricator.new(name, options, &block)
      iterate_names name, options do |name|
        @fabricators[name] = fabricator
      end
    end

    def find(name)
      @fabricators[name].tap do |definition|
        raise "Definition #{name} not found" unless definition
      end
    end

    protected

    def iterate_names(name, options)
      names = [name]
      if aliases = options[:aliases]
        case aliases
        when Array
          names |= aliases
        else
          names << aliases
        end
      end
      names.each do |name|
        yield name
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fabricators-0.1.2 lib/fabricators/definitions.rb
fabricators-0.1.1 lib/fabricators/definitions.rb
fabricators-0.1.0 lib/fabricators/definitions.rb