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