Module: ActiveForm::Mixins::ContainerMethods::ClassMethods

Defined in:
lib/active_form/mixins/container_methods.rb

Instance Method Summary collapse

Instance Method Details

#create(definition_name, prc = nil, &block) ⇒ Object



384
385
386
387
388
389
390
391
392
393
394
# File 'lib/active_form/mixins/container_methods.rb', line 384

def create(definition_name, prc = nil, &block)
  class_name = type_classname(definition_name)
  if !ActiveForm.const_defined?(class_name)
    ActiveForm.const_set(class_name, Class.new(self))
    if klass = ActiveForm.const_get(class_name)
      klass.setup_proc = (block_given? ? block : prc) 
      return klass
    end
  end
  nil
end

#get(type, &block) ⇒ Object Also known as: modify



403
404
405
406
407
408
# File 'lib/active_form/mixins/container_methods.rb', line 403

def get(type, &block)
  load(type) rescue nil unless loaded?(type)
  klass = ActiveForm.const_get(type_classname(type)) rescue nil
  klass.module_eval(&block) if klass && block_given?
  klass
end

#instance(definition_name, klass, *args, &block) ⇒ Object



396
397
398
399
400
401
# File 'lib/active_form/mixins/container_methods.rb', line 396

def instance(definition_name, klass, *args, &block)
  args.unshift(definition_name) if args.empty? || args.first.kind_of?(Hash)
  item = klass.new(*args)
  item.instance_eval(&block) if block_given?
  item
end

#load_pathsObject



380
381
382
# File 'lib/active_form/mixins/container_methods.rb', line 380

def load_paths
  @@load_paths ||= []
end

#type_classname(definition_name) ⇒ Object



411
412
413
# File 'lib/active_form/mixins/container_methods.rb', line 411

def type_classname(definition_name)
  "#{definition_name}_#{element_type}".classify
end