class Pilipinas::Base
Attributes
data[RW]
code[R]
name[R]
Public Class Methods
add(region)
click to toggle source
# File lib/pilipinas/base.rb, line 63 def add(region) self.data ||= [] self.data << region end
all()
click to toggle source
# File lib/pilipinas/base.rb, line 35 def all load_data end
assoc_collection(options)
click to toggle source
# File lib/pilipinas/base.rb, line 16 def assoc_collection(options) code = options.fetch(:code) dir = options.fetch(:dir) load_file(File.join(File.dirname(__FILE__), '..', 'data', dir.to_s, "#{code}.yml")) end
count()
click to toggle source
# File lib/pilipinas/base.rb, line 23 def count all.count end
find_by(options)
click to toggle source
# File lib/pilipinas/base.rb, line 43 def find_by(options) raise 'invalid hash' if options.empty? send "find_by_#{options.keys.first.to_s}", options.values.first.to_s end
first()
click to toggle source
# File lib/pilipinas/base.rb, line 27 def first all.first end
last()
click to toggle source
# File lib/pilipinas/base.rb, line 31 def last all.last end
load_data()
click to toggle source
# File lib/pilipinas/base.rb, line 39 def load_data raise 'Implement load_data' end
load_file(file)
click to toggle source
# File lib/pilipinas/base.rb, line 56 def load_file(file) reset_data yaml = YAML.load_file(file) yaml.each { |hash, _opts| add(new(hash)) } if yaml data end
method_missing(*args)
click to toggle source
Calls superclass method
# File lib/pilipinas/base.rb, line 48 def method_missing(*args) regex = args.first.to_s.match(/^find_by_(.*)/) super if !regex || Regexp.last_match(1).nil? load_data unless data select_by(Regexp.last_match(1), args[1]) end
parse_attributes(attr, val)
click to toggle source
# File lib/pilipinas/base.rb, line 76 def parse_attributes(attr, val) raise Pilipinas::UnknownAttribute, "Invalid attribute '#{attr}'." unless %i[code name].include?(attr.to_sym) [attr, val] end
reset_data()
click to toggle source
# File lib/pilipinas/base.rb, line 86 def reset_data self.data = [] end
select_by(attribute, val)
click to toggle source
# File lib/pilipinas/base.rb, line 68 def select_by(attribute, val) attr, value = parse_attributes(attribute.downcase, (val ? val.to_s.downcase : val)) obj = data.select { |c| c.send(attr.to_sym).downcase == value } validate(obj) obj.first end
validate(obj)
click to toggle source
# File lib/pilipinas/base.rb, line 82 def validate(obj) return nil if obj.empty? end
Private Class Methods
new(options = {})
click to toggle source
# File lib/pilipinas/base.rb, line 8 def initialize(options = {}) @code = options[:code] @name = options[:name] end