Module: ActiveForm::Mixins::ContainerMethods::ClassMethods
- Defined in:
- lib/active_form/mixins/container_methods.rb
Instance Method Summary collapse
- #create(definition_name, prc = nil, &block) ⇒ Object
- #get(type, &block) ⇒ Object (also: #modify)
- #instance(definition_name, klass, *args, &block) ⇒ Object
- #load_paths ⇒ Object
- #type_classname(definition_name) ⇒ Object
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_paths ⇒ Object
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 |