class Oj::Bag

def self.define_class(classname)

Raises:
  • (NameError) - if the classname is invalid.

Returns:
  • (Object) - an instance of the specified Class.

Parameters:
  • classname (String) -- Class name or symbol that includes Module names.
def self.define_class(classname)
  classname = classname.to_s unless classname.is_a?(String)
  tokens = classname.split('::').map(&:to_sym)
  raise NameError.new("Invalid classname '#{classname}") if tokens.empty?
  m = Object
  tokens[0..-2].each do |sym|
    if m.const_defined?(sym)
      m = m.const_get(sym)
    else
      c = Module.new
      m.const_set(sym, c)
      m = c
    end
  end
  sym = tokens[-1]
  if m.const_defined?(sym)
    c = m.const_get(sym)
  else
    c = Class.new(Oj::Bag)
    m.const_set(sym, c)
  end
  c
end