Class: Module
Instance Method Summary collapse
-
#const_cache(name) ⇒ Object
Defines a constant of the given name using the given block if it doesn't already exist.
-
#define_class(name, **macros) ⇒ Object
Shorthand for
const_set(name.camelize, Class.new(parent) { ... }).
Instance Method Details
#const_cache(name) ⇒ Object
Defines a constant of the given name using the given block if it doesn't already exist.
16 17 18 19 |
# File 'lib/cnc/core_ext/module.rb', line 16 def const_cache(name) name = name.to_s.gsub('::', ?_) const_defined?(name, false) ? const_get(name) : const_set(name, yield(name)) end |
#define_class(name, **macros) ⇒ Object
Shorthand for const_set(name.camelize, Class.new(parent) { ... }).
Useful when defining classes in macros.
4 5 6 7 8 9 10 11 12 |
# File 'lib/cnc/core_ext/module.rb', line 4 def define_class(name, *, **macros, &) name = name.to_s.camelize raise NameError, "class exists: #{name}" if const_defined?(name, false) klass = Class.new(*) do macros.each {|key, value| send(key, *value) } class_eval(&) if block_given? end const_set name, klass end |