class Attribs
Attributes
defaults[R]
names[R]
Public Class Methods
new(*attrs)
click to toggle source
# File lib/attribs.rb, line 6 def initialize(*attrs) @defaults = attrs.last.instance_of?(Hash) ? attrs.pop : {} @names = (attrs + @defaults.keys).uniq end
Public Instance Methods
add(*attrs)
click to toggle source
# File lib/attribs.rb, line 11 def add(*attrs) defaults = attrs.last.instance_of?(Hash) ? attrs.pop : {} self.class.new(*[*(names+attrs), @defaults.merge(defaults)]) end
included(descendant)
click to toggle source
# File lib/attribs.rb, line 20 def included(descendant) descendant.module_exec(self) do |this| include InstanceMethods, Anima.new(*this.names) define_singleton_method(:attributes) { this } end end
remove(*attrs)
click to toggle source
# File lib/attribs.rb, line 16 def remove(*attrs) self.class.new(*[*(names-attrs), @defaults.reject {|k| attrs.include?(k) }]) end