module GTFS::Model::ClassMethods
Public Instance Methods
attrs()
click to toggle source
# File lib/gtfs/model.rb, line 41 def attrs required_attrs + optional_attrs end
collection_name(collection_name)
click to toggle source
# File lib/gtfs/model.rb, line 65 def collection_name(collection_name) self.define_singleton_method(:name) {collection_name} self.define_singleton_method(:singular_name) { self.to_s.split('::').last. gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_").downcase } end
column_prefix(prefix)
click to toggle source
# File lib/gtfs/model.rb, line 57 def column_prefix(prefix) self.class_variable_set('@@prefix', prefix) end
each(filename) { |parse_model(to_hash)| ... }
click to toggle source
# File lib/gtfs/model.rb, line 80 def each(filename) CSV.foreach(filename, :headers => true) do |row| yield parse_model(row.to_hash) end end
has_optional_attrs(*attrs)
click to toggle source
# File lib/gtfs/model.rb, line 53 def has_optional_attrs(*attrs) self.class_variable_set('@@optional_attrs', attrs) end
has_required_attrs(*attrs)
click to toggle source
Helper methods for setting up class variables
# File lib/gtfs/model.rb, line 49 def has_required_attrs(*attrs) self.class_variable_set('@@required_attrs', attrs) end
optional_attrs()
click to toggle source
# File lib/gtfs/model.rb, line 33 def optional_attrs self.class_variable_get('@@optional_attrs') end
parse_model(attr_hash, options={})
click to toggle source
# File lib/gtfs/model.rb, line 86 def parse_model(attr_hash, options={}) unprefixed_attr_hash = {} attr_hash.each do |key, val| unprefixed_attr_hash[key.gsub(/^#{prefix}/, '')] = val end model = self.new(unprefixed_attr_hash) end
parse_models(data, options={})
click to toggle source
# File lib/gtfs/model.rb, line 96 def parse_models(data, options={}) return [] if data.nil? || data.empty? models = [] CSV.parse(data, :headers => true) do |row| model = parse_model(row.to_hash, options) models << model if options[:strict] == false || model.valid? end models end
prefix()
click to toggle source
Getters for class variables
# File lib/gtfs/model.rb, line 29 def prefix self.class_variable_get('@@prefix') end
required_attrs()
click to toggle source
# File lib/gtfs/model.rb, line 37 def required_attrs self.class_variable_get('@@required_attrs') end
required_file(required)
click to toggle source
# File lib/gtfs/model.rb, line 61 def required_file(required) self.define_singleton_method(:required_file?) {required} end
uses_filename(filename)
click to toggle source
# File lib/gtfs/model.rb, line 76 def uses_filename(filename) self.define_singleton_method(:filename) {filename} end