module MiniTools::ItemFactory::ClassMethods

Attributes

default_klass[R]

Public Instance Methods

build(value, *args) click to toggle source

Builds the appropriate item based on `value`. Any additional args are passed on to the item's initializer

# File lib/mini_tools/item_factory.rb, line 40
def build value, *args
  klass_for(value).new(*args)
end
default(klass) click to toggle source

Sets the default class if there is no match in the map

# File lib/mini_tools/item_factory.rb, line 50
def default klass
  @default_klass = klass
end
map(values) click to toggle source

Defines the map of values to class types

# File lib/mini_tools/item_factory.rb, line 45
def map values
  @klass_map = values
end

Private Instance Methods

klass_for(value) click to toggle source
# File lib/mini_tools/item_factory.rb, line 60
def klass_for value
  value = value.call if value.respond_to? :call
  return klass_map[value] if klass_map.has_key? value
  return default_klass
end
klass_map() click to toggle source
# File lib/mini_tools/item_factory.rb, line 56
def klass_map
  @klass_map ||= {}
end