Class: Module

Inherits:
Object
  • Object
show all
Defined in:
lib/cafe_car/core_ext/module.rb

Instance Method Summary collapse

Instance Method Details

#define_class(name, **macros) ⇒ Object

Shorthand for ‘const_set(name.camelize, Class.new(parent) { … })`. Useful when defining classes in macros.

Raises:

  • (NameError)


6
7
8
9
10
11
12
13
14
# File 'lib/cafe_car/core_ext/module.rb', line 6

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