Sha256: 0634808bfa568fdf7e0a3095798271bf3fc9bed850ec5a9d865b81212f09acbc
Contents?: true
Size: 777 Bytes
Versions: 1
Compression:
Stored size: 777 Bytes
Contents
require 'liner/version' require 'liner/base' require 'liner/hashable' require 'liner/equalizable' require 'liner/inspectable' require 'liner/serializable' require 'ext/class' module Liner def self.included(base) [Base, Hashable, Equalizable, Inspectable, Serializable].each do |mod| base.send :include, mod end end end def Liner.new(*keys) apply Class.new, *keys end def Liner.apply(base, *keys) keys = keys.map(&:to_sym).uniq.freeze base.class_eval do define_method :liner_keys do begin (super() + keys).uniq rescue NoMethodError keys end end include Liner keys.each do |key| define_method(key){ self[key] } define_method("#{key}="){ |value| self[key] = value } end end base end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
liner-0.1.2 | lib/liner.rb |