class Oj::Bag
def self.define_class(classname)
-
(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