class Twfy::DataElement

Attributes

client[R]

Public Class Methods

convert(*fields,&block) click to toggle source
# File lib/twfy/data_element.rb, line 12
def convert(*fields,&block)
  fields.each do |field|
    @@conversions[field] = block
  end
end
convert_to_date(*fields) click to toggle source
# File lib/twfy/data_element.rb, line 18
def convert_to_date(*fields)
  fields.each do |field|
    convert field do |d|
      Date.parse(d)
    end
  end
end
new(client, data={}) click to toggle source
# File lib/twfy/data_element.rb, line 29
def initialize(client, data={})
  @client = client
  update_attributes(data)
end

Public Instance Methods

convert(field, value) click to toggle source
# File lib/twfy/data_element.rb, line 50
def convert(field, value)
  if conversion = @@conversions[field.to_sym]
    args = [value]
    args.unshift self if conversion.arity == 2
    conversion.call(*args)
  else
    value
  end
end
update_attributes(data = {}) click to toggle source
# File lib/twfy/data_element.rb, line 34
def update_attributes(data = {})
  data.each do |field,value|
    instance_variable_set("@#{field}", convert(field, value))
    unless self.respond_to?(field)
      self.class.send(:define_method, field) do
        instance_variable_get("@#{field}")
      end
    end
  end
end
with(data = {}) click to toggle source
# File lib/twfy/data_element.rb, line 45
def with(data = {})
  update_attributes(data)
  self
end