class Kilt::Object

Attributes

fields[RW]
slug[RW]
type[RW]
values[RW]

Public Class Methods

new(type, values = {}) click to toggle source
# File lib/kilt/object.rb, line 5
def initialize(type, values = {})
  @type = type
  initialize_values values
  assemble_fields
end

Public Instance Methods

[](key) click to toggle source
# File lib/kilt/object.rb, line 17
def [](key)
  # Return the values of the object as a hash
  value = @values[key.to_s]
  return nil unless value
  value.respond_to?(:html_safe) ? value.html_safe : value
end
[]=(key, value) click to toggle source
# File lib/kilt/object.rb, line 24
def []=(key, value)
   @values[key.to_s] = value
end
empty?() click to toggle source
# File lib/kilt/object.rb, line 32
def empty?
  @values.length == 0
end
fill(params) click to toggle source
# File lib/kilt/object.rb, line 11
def fill(params)
  fields_that_should_be_set_given(params).each do |field, field_type|
    self[field] = the_value_for field, field_type, params
  end
end

Private Instance Methods

assemble_fields() click to toggle source
# File lib/kilt/object.rb, line 38
def assemble_fields
  @fields = Kilt.send(@type).fields.to_h
  @fields['name'] = 'text' unless @fields[:name]
end
fields_that_should_be_set_given(params) click to toggle source
# File lib/kilt/object.rb, line 53
def fields_that_should_be_set_given params
  @fields.map    { |k, v| [k, v.downcase] }
         .select { |k, v| params[k] || (params["#{k}-hidden"].to_s != '') }
end
initialize_values(values) click to toggle source
# File lib/kilt/object.rb, line 58
def initialize_values values
  @values = values

  @values.keys
         .select { |x| x.is_a? Symbol }
         .each   { |k| @values[k.to_s] = @values[k] }
end
the_value_for(key, field_type, params) click to toggle source
# File lib/kilt/object.rb, line 43
def the_value_for(key, field_type, params)
  if params["#{key}-hidden"] == 'clear' && !params[key]
    ''
  elsif Kilt::Upload.uploadable_fields.include? field_type
    Kilt::Upload.send field_type, params[key]
  else
    params[key]
  end
end