module Ehon::ClassMethods
Attributes
contents[RW]
default_options[RW]
Public Instance Methods
all()
click to toggle source
# File lib/ehon.rb, line 62 def all self.contents.values end
create_accessors!()
click to toggle source
# File lib/ehon.rb, line 57 def create_accessors! create_readers! create_writers! end
create_readers!()
click to toggle source
# File lib/ehon.rb, line 49 def create_readers! options.each {|option| define_reader option } end
create_writers!()
click to toggle source
# File lib/ehon.rb, line 53 def create_writers! options.each {|option| define_writer option } end
default(options = {})
click to toggle source
# File lib/ehon.rb, line 45 def default(options = {}) self.default_options.merge!(options) end
enum(id, options = {}, &block)
click to toggle source
# File lib/ehon.rb, line 38 def enum(id, options = {}, &block) instance = new(id, options) instance.instance_eval(&block) if block_given? self.contents[id] = instance instance end
find(*queries)
click to toggle source
# File lib/ehon.rb, line 66 def find(*queries) queries.flatten! findeds = queries.map {|query| next self.contents[query] unless query.is_a?(Hash) self.contents.values.select {|instance| query.all? {|key, value| instance.read_attribute(key) == value } } }.flatten.compact single = if queries.any? {|query| query.is_a?(Hash) } queries.size == 1 && findeds.size <= 1 else queries.size == 1 end single ? findeds.first : findeds end
Also aliased as: []
Private Instance Methods
define_reader(symbol)
click to toggle source
# File lib/ehon.rb, line 88 def define_reader(symbol) class_eval do define_method(symbol) { read_attribute(symbol) } end end
define_writer(symbol)
click to toggle source
# File lib/ehon.rb, line 94 def define_writer(symbol) return if symbol == :id class_eval do define_method("#{symbol}=") {|value| @options[symbol] = value } end end
options()
click to toggle source
# File lib/ehon.rb, line 84 def options self.contents.values.map {|e| e.options.keys }.flatten.uniq end