module Gorillib::Factory
Constants
- FLT_CRUFT_CHARS
In the following, we use eg ‘Float(val)` and not `val.to_f` – they round-trip things
Float("0x1.999999999999ap-4") # => 0.1 "0x1.999999999999ap-4".to_f # => 0
- FLT_NOT_INT_RE
- IdenticalFactory
Public Class Methods
factory_for(type, options={})
click to toggle source
# File lib/gorillib/model/factories.rb, line 21 def self.factory_for(type, options={}) return find(type) if options.compact.blank? klass = factory_klasses[type] or raise "You can only supply options #{options} to a Factory-mapped class" klass.new(options) end
find(type)
click to toggle source
# File lib/gorillib/model/factories.rb, line 10 def self.find(type) case when factories.include?(type) then return factories[type] when type.respond_to?(:receive) then return type when type.is_a?(Proc) || type.is_a?(Method) then return Gorillib::Factory::ApplyProcFactory.new(type) when type.is_a?(String) then return( factories[type] = ActiveSupport::Inflector.constantize(ActiveSupport::Inflector.camelize(type.gsub(/\./, '/'))) ) else raise ArgumentError, "Don't know which factory makes a #{type}" end end
register_factory(factory, typenames)
click to toggle source
# File lib/gorillib/model/factories.rb, line 27 def self.register_factory(factory, typenames) typenames.each{|typename| factories[typename] = factory } end
register_factory_klass(factory_klass, typenames)
click to toggle source
# File lib/gorillib/model/factories.rb, line 31 def self.register_factory_klass(factory_klass, typenames) typenames.each{|typename| factory_klasses[typename] = factory_klass } end
Private Class Methods
factories()
click to toggle source
# File lib/gorillib/model/factories.rb, line 36 def self.factories() @factories ||= Hash.new end
factory_klasses()
click to toggle source
# File lib/gorillib/model/factories.rb, line 37 def self.factory_klasses() @factory_klasses ||= Hash.new end