module Kernel

Meta-programming Kernel for Syntactic Sugars

Public Instance Methods

define_class(name, ancestor = Object) click to toggle source

This method is implemented to dynamically generate class with given name and template. Referenced from Ruby China @param [String] name name of class @param [Class] ancestor class to be inherited @yield inner block to be inserted into class @return [Class] the class defined

# File lib/midori/core_ext/define_class.rb, line 10
def define_class(name, ancestor = Object)
  Object.const_set(name, Class.new(ancestor))
  Object.const_get(name).class_eval(&Proc.new) if block_given?
  Object.const_get(name)
end
define_error(*args) click to toggle source

Define a batch of error handler with given name @param [Array<Symbol>] args names to be defined @return [nil] nil @example

define_error(:foo_error, :bar_error) 
=> nil, FooError < StandardError and BarError < StandardError would be defined
# File lib/midori/core_ext/define_class.rb, line 22
def define_error(*args)
  args.each do |arg|
    class_name = arg.to_s.split('_').collect(&:capitalize).join
    define_class(class_name, StandardError)
  end
  nil
end