class Model
Constants
- VERSION
Attributes
defaults[W]
keys[W]
Public Class Methods
defaults()
click to toggle source
# File lib/model.rb, line 13 def defaults @defaults ||= {} end
inherited(subclass)
click to toggle source
# File lib/model.rb, line 17 def inherited(subclass) subclass.keys = keys.dup subclass.defaults = defaults.dup end
key(symbol, &block)
click to toggle source
define a key and an optional block that provides a default value for the key
# File lib/model.rb, line 23 def key(symbol, &block) keys << symbol unless @keys.include? symbol attr_accessor symbol defaults[symbol] = block if block end
keys()
click to toggle source
# File lib/model.rb, line 9 def keys @keys ||= [] end
new(hash={})
click to toggle source
# File lib/model.rb, line 30 def initialize(hash={}) unknown = hash.keys - keys if unknown.count > 0 raise ArgumentError, "unknown keyword#{'s' if unknown.count > 1}: #{unknown.join', '}" end hash.each_pair {|key, v| instance_variable_set "@#{key}", v} (self.class.defaults.keys - hash.keys).each do |key| block = self.class.defaults[key] instance_variable_set("@#{key}", instance_exec(&block)) end end
Public Instance Methods
[](key)
click to toggle source
# File lib/model.rb, line 46 def [] key send key end
eql?(other)
click to toggle source
# File lib/model.rb, line 50 def eql?(other) keys.all? { |k| send(k) == other[k] } end
Also aliased as: ==
keys()
click to toggle source
# File lib/model.rb, line 42 def keys self.class.keys end