Module: Candy::Factory

Defined in:
lib/candy/factory.rb

Overview

Utility methods that can generate new methods or classes for some of Candy’s magic.

Class Method Summary collapse

Class Method Details

.magic_method(klass, method, params = '') ⇒ Object

Creates a method with the same name as a provided class, in the same namespace as that class, which delegates to a given class method of that class. (Whew. Make sense?)



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/candy/factory.rb', line 9

def self.magic_method(klass, method, params='')
  ns = namespace(klass)
  my_name = klass.name.sub(ns, '').to_sym
  parent = (ns == '' ? Object : qualified_const_get(ns))
  unless parent.method_defined?(my_name)
    parent.class_eval <<-CLASS
      def #{my_name}(#{params})
        #{klass}.#{method}(#{params.gsub(/\s?=(.+?),/,',')})
      end
    CLASS
  end
end