module Formup::ClassMethods

Class methods {{{

Public Instance Methods

source(key, options={}) click to toggle source
# File lib/formup.rb, line 26
def source(key, options={})
  initialize_sources
  attribute_defs = create_attribute_defs(key, options[:attributes], options[:aliases])
  @sources[key] = Formup::Source.new(key, attribute_defs)
  deploy_attributes(attribute_defs)
end
sources() click to toggle source
# File lib/formup.rb, line 21
def sources
  initialize_sources
  @sources.dup
end

Private Instance Methods

create_attribute_defs(key, attributes, aliases) click to toggle source
# File lib/formup.rb, line 34
def create_attribute_defs(key, attributes, aliases)
  attribute_defs = {}.with_indifferent_access

  if attributes
    attributes.each do |attr|
      attribute_defs[attr.to_s] = "#{key}_#{attr}"
    end
  end
  if aliases
    aliases.each do |k, v|
      attribute_defs[k.to_s] = v.to_s
    end
  end
  attribute_defs
end
deploy_attributes(defs) click to toggle source
# File lib/formup.rb, line 50
def deploy_attributes(defs)
  defs.values.each do |attr|
    attr_accessor attr

    define_method "#{attr}?" do
      Formup::TRUE_VALUES.include?(self.__send__(attr))
    end
  end
end
initialize_sources() click to toggle source
# File lib/formup.rb, line 60
def initialize_sources
  @sources ||= {}.with_indifferent_access
end