class ShadowForm::Core

Public Class Methods

give_name(new_name) click to toggle source
# File lib/shadow_form.rb, line 13
def give_name(new_name)
  form_config[:new_name] = new_name
end
new(*args) click to toggle source
# File lib/shadow_form.rb, line 17
def new(*args)
  form_class.new(*args)
end
shadow_of(klass) click to toggle source
# File lib/shadow_form.rb, line 5
def shadow_of(klass)
  form_config[:shadow_of] = klass
end
validation(&block) click to toggle source
# File lib/shadow_form.rb, line 9
def validation(&block)
  form_config[:validation] = block
end

Private Class Methods

form_class() click to toggle source
# File lib/shadow_form.rb, line 23
def form_class
  @form_class ||= (
    klass      = form_config[:shadow_of] || fail('[ShadowForm] missing shadow class')
    klass_name = form_config.fetch(:new_name, name)
    Class.new(klass).tap do |m_class|
      self.const_set('ShadowForm', m_class)
      m_class.class_eval("def self.name; \"#{klass_name}\"; end")
      m_class.class_eval(&form_config[:validation]) if form_config[:validation]
    end
  )
end
form_config() click to toggle source
# File lib/shadow_form.rb, line 35
def form_config
  @form_config ||= {}
end