Class: GtfsReader::Config::FileDefinition
- Inherits:
-
Object
- Object
- GtfsReader::Config::FileDefinition
- Defined in:
- lib/gtfs_reader/config/file_definition.rb
Overview
Describes a single file in a GTFS feed.
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#[](name) ⇒ Column
The column with the given name.
-
#col(name, *args, &block) {|input| ... } ⇒ Column
Creates a column with the given name.
- #columns ⇒ Object
-
#filename ⇒ String
The filename of this file within the GTFS feed.
-
#initialize(name, opts = {}) ⇒ FileDefinition
constructor
A new instance of FileDefinition.
-
#optional_columns ⇒ Array<Column>
The columns not required to appear in this file.
-
#output_map(default = nil, reverse_map) ⇒ Object
Creates an input-output proc to convert column values from one form to another.
-
#required? ⇒ Boolean
If this file is required to be in the feed.
-
#required_columns ⇒ Array<Column>
The columns required to appear in this file.
-
#unique_columns ⇒ Array<Column>
The columns which cannot have two rows with the same value.
Constructor Details
#initialize(name, opts = {}) ⇒ FileDefinition
Returns a new instance of FileDefinition.
12 13 14 15 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 12 def initialize(name, opts={}) @name, @columns = name, {} @opts = { required: false }.merge (opts || {}) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 7 def name @name end |
Instance Method Details
#[](name) ⇒ Column
Returns The column with the given name.
28 29 30 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 28 def [](name) @columns[name] end |
#col(name, *args, &block) {|input| ... } ⇒ Column
Creates a column with the given name.
62 63 64 65 66 67 68 69 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 62 def col(name, *args, &block) if @columns.key? name @columns[name].parser &block if block_given? return @columns[name] end @columns[name] = Column.new name, args.first, &block end |
#columns ⇒ Object
32 33 34 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 32 def columns @columns.values end |
#filename ⇒ String
Returns The filename of this file within the GTFS feed.
23 24 25 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 23 def filename "#{name}.txt" end |
#optional_columns ⇒ Array<Column>
Returns The columns not required to appear in this file.
42 43 44 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 42 def optional_columns columns.reject &:required? end |
#output_map(default = nil, reverse_map) ⇒ Object
Creates an input-output proc to convert column values from one form to another.
Many parser procs simply map a set of known values to another set of known values. This helper creates such a proc from a given hash and optional default.
83 84 85 86 87 88 89 90 91 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 83 def output_map(default=nil, reverse_map) if reverse_map.values.uniq.length != reverse_map.values.length raise FileDefinitionError, "Duplicate values given: #{reverse_map}" end map = default.nil? ? {} : Hash.new( default ) reverse_map.each { |k,v| map[v] = k } map.method( :[] ).to_proc end |
#required? ⇒ Boolean
Returns If this file is required to be in the feed.
18 19 20 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 18 def required? @opts[:required] end |
#required_columns ⇒ Array<Column>
Returns The columns required to appear in this file.
37 38 39 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 37 def required_columns columns.select &:required? end |
#unique_columns ⇒ Array<Column>
Returns The columns which cannot have two rows with the same value.
48 49 50 |
# File 'lib/gtfs_reader/config/file_definition.rb', line 48 def unique_columns columns.select &:unique? end |