🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

metra_schedule

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

metra_schedule

0.3.1
Rubygems
Version published
Maintainers
1
Created
Source

= metra_schedule: A library to access the Chicago Metra schedule information as Ruby objects.

This is the data library that powers http://metra.blakesmith.me

Supported Lines: Union Pacific Northwest => :up_nw Union Pacific North => :up_n North Central Service => :ncs Milwaukee District West => :md_w Union Pacific West => :up_w BNSF Railway => :bnsf Heritage Corrider => :hc Rock Island District => :ri Metra Electric District => :me

metra_schedule provides:

Scraper:: scrapes the metrarail.com website for schedule information. Schedule objects:: The scraper creates ruby objects for lines, trains and stops Cacher:: After a schedule is scraped, it can be serialized locally for subsequent object access Flexible Query Language:: Build complex scheduling constraints and permutations with the various query methods.

= Usage

How to use metra_schedule

=== Setup

gem install metra_schedule -s http://gemcutter.org

=== Using

require 'metra' line = Metra.new.line(:up_nw) # Union pacific Northwest line line.load_schedule

=== Building a list of trains

All outbound trains

line.outbound.trains

All outbound weekday trains

line.outbound.weekday.trains

All inbound saturday trains that start at Barrington and end at Ogilve

line.inbound.saturday.from(:barrington).to(:ogilve).trains

All sunday/holiday outbound trains that start at Arlington Heights after 12:30PM and stop at Park Ridge

line.outbound.holiday.from(:arlington_heights).at(Time.parse('12:30PM')).to(:park_ridge).trains

All inbound trains on December 30th 2009

line.inbound.on(Date.parse("December 30th 2009")).trains

= Trains

=== Instance variables:

train.train_num :: Metra train number. train.stops :: An array of all Stop objects. Contains the stop name and what time the train will arrive at that stop train.schedule :: Symbol representing the day the train runs. Either :weekday, :saturday, or :sunday (holidays run on a sunday schedule) train.direction :: Symbol representing the train direction. Either :inbound or :outbound train.bike_limit :: Maximum number of bikes per train. nil if no limit.

=== Instance methods:

train.my_travel_time :: Travel time in minutes of your trip. Assumes you specified Line#from and Line#to when you built your query train.print_my_travel_time :: Same as above, but in human readable form EG - "1 hour 2 minutes" train.has_stop?(stop) :: Takes a station name symbol and determines whether this train has that stop train.in_time?(station, time) :: Takes a station name symbol and time. Returns true if the time is before the time the train reaches that stop

= Stops

Stored inside each train.

=== Instance variables:

stop.station :: Symbol representing the station name stop.time :: Time object with the time the train stops there

=== Instance methods:

stop.in_time?(time) :: True if time is less than stop.time

=== Class methods:

Stop.pretty_print(station) :: Converts the station symbol to something human readable - EG: :irving_park becomes "Irving Park"

= Lines

=== Instance variables:

line.line_key :: Symbol of the line name line.name :: Human readable line name EG - "Union Pacific Northwest" line.url :: Url that the parser scrapes from. line.dir :: Symbol representing selected line direction. :outbound or :inbound. Set with Line#outbound Line#inbound or deduced using Line#from and Line#to or by current time of day using Line#deduce_direction_by_time line.sched :: Symbol representing selected line schedule. :weekday, :saturday or :sunday. Set with Line#weekday, Line#saturday Line#sunday Line#on(date) or Line#deduce_schedule line.start :: Symbol representing starting station name. EG - :clyborn. Set with Line#from line.destination :: Symbol representing destanation station name. EG - :ogilve. Set with Line#to line.time :: Time object representing the time you'd like to depart. Used to filter down lines. Set with Line#at

=== Instance methods:

line.load_schedule :: Load cached engine data from Marshaled cache dir (~/.metra_schedule) or if not available, fetch from the Metra website, parse and cache it line.trains :: Takes in all the other parameters you specified and returns only the trains that meet the criteria you specfied line.from(station) :: Set your starting station line.to(station) :: Set your destination station line.direction(dir) :: Set the line direction. :outbound or :inbound line.outbound :: Same as line.direction(:outbound) line.inbound :: Same as line.direction(:inbound) line.deduce_direction :: Infers line direction if you specified Line#from and Line#to line.deduce_direction_by_time :: Infers line direction based on the system clocks time of day. Before noon it sets to inbound, after noon it assumes outbound line.schedule(sched) :: Sets the line schedule. Either :weekday :saturday or :sunday line.weekday :: Same as line.direction(:weekday) line.saturday :: Same as line.direction(:saturday) line.sunday :: Same as line.direction(:sunday) line.holiday :: Same as line.direction(:sunday) line.on(date) :: Sets schedule using the date you specified line.deduce_schedule :: Same as on(Date.today) line.at(time) :: Sets line time. Specifying this will only display trains that appear at your starting station (specified with Line#from) before the given time

= Line Data

Current supported lines:

=== Union Pacific Northwest => :up_nw

stations:

:ogilve, :clyborn, :irving_park, :jefferson_park, :gladstone_park, :norwood_park, :edison_park, :park_ridge, :dee_road, :des_plaines, :cumberland, :mount_prospect, :arlington_heights, :arlington_park, :palatine, :barrington, :fox_river_grove, :cary, :pingree_road, :crystal_lake, :woodstock, :mchenry, :harvard

=== Union Pacific North => :up_n

stations:

:ogilve, :clyborn, :ravenswood, :rogers_park, :evanston_main_street, :evanston_davis_street, :evanston_central_street, :wilmette, :kenilworth, :indian_hill, :winnetka, :hubbard_woods, :glencoe, :braeside, :ravinia_park, :ravinia, :highland_park, :highwood, :fort_sheridan, :lake_forest, :lake_bluff, :greate_lakes, :north_chicago, :waukegan, :zion, :winthrop_harbor, :kenosha

=== North Central Service => :ncs

stations:

:union_station, :western_avenue, :river_grove, :franklin_park, :schiller_park, :rosemont, :ohare_transfer, :prospect_heights, :wheeling, :buffalo_grove, :prairie_view, :vernon_hills, :mundelein, :libertyville, :grayslake, :round_lake_beach, :lake_villa, :antioch

=== Milwaukee District West => :md_w

stations:

:union_station, :western_avenue, :grand_cicero, :hanson_park, :galewood, :mars, :mont_clare, :elmwood_park, :river_park, :franklin_park, :mannheim, :bensenville, :wood_dale, :itasca, :medinah, :roselle, :schaumburg, :hanover_park, :bartlett, :national_street, :elgin, :big_timber

=== Union Pacific West => :up_w

stations:

:ogilve, :kedzie, :oak_park, :river_forest, :maywood, :melrose_park, :bellwood, :berkeley, :elmhurst, :villa_park, :lombard, :glen_ellyn, :college_avenue, :wheaton, :winfield, :west_chicago, :geneva, :la_fox, :elburn

=== BNSF Railway => :bnsf

stations:

:union_station, :halsted, :western_avenue, :cicero, :lavergne, :berwyn, :harlem_ave, :riverside, :hollywood, :brookfield, :congress_park, :lagrange_road, :lagrange_stone_avenue, :western_springs, :highlands, :hinsdale, :west_hinsdale, :clarendon_hills, :westmont, :fairview_avenue, :downers_grove_main_street, :belmont, :lisle, :naperville, :route_59, :aurora

=== Heritage Corrider => :hc

stations:

:union_station, :summit, :willow_springs, :lemont, :lockport, :joliet

=== Rock Island District => :ri

stations:

:chicago_lasalle_station, :gresham, :longwood, :washington_heights, :brainerd, :beverly_hills_91_street, :beverly_hills_95_street, :beverly_hills_99_street, :beverly_hills_103_street, :beverly_hills_107_street, :morgan_park_111_street, :morgan_park_115_street, :street_119, :street_123, :prairie_street, :blue_island, :robbins, :midlothian, :oak_forest, :tinley_park, :tinley_park_80_avenue, :hickory_creek, :mokena, :new_lenox, :joliet

=== Metra Electric District => :me

stations:

:milennium_station, :van_buren_street, :museum_campus, :street_18, :mccormick_place, :street_27, :street_47, :street_51_53, :street_55_56_57, :street_59, :street_63, :street_75, :street_79, :street_83, :street_87, :street_91, :street_95, :street_103, :street_107, :street_111, :street_115, :riverdale, :ivanhoe, :street_147, :harvey, :hazel_crest, :calumet, :homewood, :flossmoor, :olympia_fields, :street_211, :matteson, :richton_park, :university_park, :stony_island, :bryn_mawr, :south_shore, :windsor_park, :street_79, :street_83, :street_87, :street_93, :state_street, :stewart_ridge, :west_pullman, :racine, :ashland, :burr_oak, :blue_island

FAQs

Package last updated on 31 Mar 2010

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

OSZAR »