module Formup

Constants

TRUE_VALUES
VERSION

Public Class Methods

new(params = {}) click to toggle source

Instance methods {{{

# File lib/formup.rb, line 67
def initialize(params = {})
  return unless params

  parameters = params.dup.with_indifferent_access
  self.class.sources.each do |_, src|
    src.attribute_defs.each do |attr_def|
      __send__(attr_def.attr.to_s + "=", parameters.delete(attr_def.attr)) if parameters.key?(attr_def.attr)
    end
  end
  handle_extra_params(parameters) unless parameters.empty?
end

Public Instance Methods

handle_extra_params(parameters) click to toggle source
# File lib/formup.rb, line 79
def handle_extra_params(parameters)
end
load(params = {}) click to toggle source
# File lib/formup.rb, line 104
def load(params = {})
  params.each do |k, v|
    if self.class.sources.key?(k)
      source = self.class.sources[k]
      source.attribute_defs.each do |attr_def|
        value = extract_value(v, attr_def.base)
        __send__(attr_def.attr + "=", value) if value
      end
    end
  end
end
params_for(key,*excludes_attrs) click to toggle source
# File lib/formup.rb, line 86
def params_for(key,*excludes_attrs)
  if excludes_attrs && excludes_attrs.first == false
     excludes = []
  else
    excludes = [excludes_attrs].flatten.compact
    excludes << :id if excludes.empty?
  end

  parameters = {}.with_indifferent_access
  return parameters unless self.class.sources.key?(key)

  source = self.class.sources[key]
  source.attribute_defs.inject(parameters) do |result, attr_def|
    result[attr_def.base] = __send__(attr_def.attr) if excludes.all? { |attr| attr.to_s != attr_def.base }
    result
  end
end
persisted?() click to toggle source
# File lib/formup.rb, line 82
def persisted?
  false
end

Private Instance Methods

extract_value(obj, attr) click to toggle source
# File lib/formup.rb, line 117
def extract_value(obj, attr)
  if obj.respond_to?(attr)
    obj.__send__(attr)
  elsif obj.respond_to?(:[])
    obj[attr.to_s] || obj[attr.to_sym]
  else
    nil
  end
end