module Icss::Meta::RecordModel

Public Class Methods

included(base) click to toggle source
# File lib/icss/type/record_model.rb, line 5
def self.included(base)
  base.extend(Icss::Meta::RecordType)
  base.metamodel
end

Public Instance Methods

attr_set?(attr) click to toggle source

true if the attr is a receiver variable and it has been set

# File lib/icss/type/record_model.rb, line 26
def attr_set?(attr)
  self.class.has_field?(attr) && self.instance_variable_defined?("@#{attr}")
end
receive!(hsh={}) click to toggle source

modify object in place with new typecast values.

# File lib/icss/type/record_model.rb, line 13
def receive!(hsh={})
  raise ArgumentError, "Can't receive (it isn't hashlike): {#{hsh.inspect}}" unless hsh.respond_to?(:[]) && hsh.respond_to?(:has_key?)
  self.class.send(:_rcvr_methods).each do |attr, meth|
    if    hsh.has_key?(attr)      then val = hsh[attr]
    elsif hsh.has_key?(attr.to_s) then val = hsh[attr.to_s]
    else next ; end
    self.send(meth, val)
  end
  run_after_receivers(hsh)
  self
end
to_zaml(z=ZAML.new) click to toggle source
# File lib/icss/serialization.rb, line 5
def to_zaml(z=ZAML.new)
  hsh = self.to_wire
  hsh.to_zaml(z)
  z.to_s
end

Protected Instance Methods

_set_field_val(field_name, val) click to toggle source
# File lib/icss/type/record_model.rb, line 43
def _set_field_val(field_name, val)
  self.instance_variable_set("@#{field_name}", val)
end
run_after_receivers(hsh) click to toggle source
# File lib/icss/type/record_model.rb, line 37
def run_after_receivers(hsh)
  self.class.after_receivers.each do |after_hook_name, after_hook|
    self.instance_exec(hsh, &after_hook)
  end
end
unset!(attr) click to toggle source
# File lib/icss/type/record_model.rb, line 30
def unset!(attr)
  self.send(:remove_instance_variable, "@#{attr}") if self.instance_variable_defined?("@#{attr}")
end