module ModelBuilder::ClassBuilder
Public Class Methods
add_class(mod, klass)
click to toggle source
# File lib/model_builder/class_builder.rb, line 48 def self.add_class(mod, klass) @@dynamic_classes[mod] = klass end
build(class_full_name, opts={})
click to toggle source
# File lib/model_builder/class_builder.rb, line 6 def self.build(class_full_name, opts={}) namespace = namespace_from_class_full_name class_full_name class_name = class_name_from_class_full_name class_full_name return namespace.const_get class_name if namespace.const_defined? class_name klass = get_class_from_options opts namespace.const_set class_name, klass add_class namespace, klass include_modules klass, opts[:includes] create_accessors klass, opts[:accessors] klass end
class_full_name_parts(class_full_name)
click to toggle source
# File lib/model_builder/class_builder.rb, line 30 def self.class_full_name_parts(class_full_name) class_full_name.split('::') end
class_name_from_class_full_name(class_full_name)
click to toggle source
# File lib/model_builder/class_builder.rb, line 34 def self.class_name_from_class_full_name(class_full_name) class_full_name_parts(class_full_name).last end
class_namespace_name(class_full_name)
click to toggle source
# File lib/model_builder/class_builder.rb, line 26 def self.class_namespace_name(class_full_name) class_full_name_parts(class_full_name)[0...-1].join '::' end
clean()
click to toggle source
# File lib/model_builder/class_builder.rb, line 71 def self.clean dynamic_classes.each_pair do |mod, klass| class_name = klass.to_s.gsub(/^.*::/, '') return if !Object.const_defined?(mod.to_s) or !mod.const_defined?(class_name) mod.send :remove_const, class_name end @@dynamic_classes = {} end
create_accessor(klass, accessor)
click to toggle source
# File lib/model_builder/class_builder.rb, line 67 def self.create_accessor(klass, accessor) klass.send 'attr_accessor', accessor unless accessor.nil? end
create_accessors(klass, accessors=[])
click to toggle source
# File lib/model_builder/class_builder.rb, line 61 def self.create_accessors(klass, accessors=[]) return if accessors.nil? accessors = [accessors] unless accessors.is_a? Array accessors.each { |accessor| create_accessor(klass, accessor) } end
dynamic_classes()
click to toggle source
# File lib/model_builder/class_builder.rb, line 80 def self.dynamic_classes @@dynamic_classes end
get_class_from_options(opts)
click to toggle source
# File lib/model_builder/class_builder.rb, line 38 def self.get_class_from_options(opts) superclass = get_superclass_from_options opts superclass.nil? ? Class.new : Class.new(superclass) end
get_superclass_from_options(opts)
click to toggle source
# File lib/model_builder/class_builder.rb, line 43 def self.get_superclass_from_options(opts) superclass = opts[:superclass] superclass.is_a?(String) ? superclass.constantize : superclass end
include_modules(klass, modules)
click to toggle source
# File lib/model_builder/class_builder.rb, line 52 def self.include_modules(klass, modules) return if modules.nil? modules = [modules] unless modules.is_a? Array modules.each do |m| m_const = m.kind_of?(String) ? Object.const_get(m) : m klass.send :include, m_const end end
namespace_from_class_full_name(class_full_name)
click to toggle source
# File lib/model_builder/class_builder.rb, line 21 def self.namespace_from_class_full_name(class_full_name) namespace_name = class_namespace_name(class_full_name) namespace_name.blank? ? Object : const_get(namespace_name) end