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/factories.rb, line 29 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/factories.rb, line 18 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] = Gorillib::Inflector.constantize(Gorillib::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/factories.rb, line 35 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/factories.rb, line 39 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/factories.rb, line 44 def self.factories() @factories ||= Hash.new end
factory_klasses()
click to toggle source
# File lib/gorillib/factories.rb, line 45 def self.factory_klasses() @factory_klasses ||= Hash.new end