class NextTrain
Attributes
stpid[R]
Public Class Methods
[](stpid)
click to toggle source
# File lib/next_train.rb, line 5 def self.[](stpid) new(stpid).execute end
api_key=(api_key)
click to toggle source
# File lib/next_train.rb, line 9 def self.api_key= (api_key) CTA::TrainTracker.key = api_key end
new(stpid)
click to toggle source
# File lib/next_train.rb, line 13 def initialize(stpid) @stpid = stpid end
Public Instance Methods
execute()
click to toggle source
# File lib/next_train.rb, line 17 def execute if minutes_until_next_arrival == 0 "arriving" else arrival_time_in_minutes end end
Private Instance Methods
arrival_time_in_minutes()
click to toggle source
# File lib/next_train.rb, line 29 def arrival_time_in_minutes time_until_next_arrival_diff[:diff] end
arrival_time_key()
click to toggle source
# File lib/next_train.rb, line 45 def arrival_time_key "arrT" end
arrivals()
click to toggle source
# File lib/next_train.rb, line 53 def arrivals ensure_no_puts do data = CTA::TrainTracker.arrivals(stpid: stpid) if data.empty? raise "No data returned, please check your API key" else data end end end
ensure_no_puts(&block)
click to toggle source
# File lib/next_train.rb, line 69 def ensure_no_puts(&block) tmp = $stdout $stdout = StringIO.new block.call ensure $stdout = tmp end
error?(data)
click to toggle source
# File lib/next_train.rb, line 65 def error?(data) data["errCd"] && data["errCd"] != "0" end
minutes_until_next_arrival()
click to toggle source
# File lib/next_train.rb, line 33 def minutes_until_next_arrival time_until_next_arrival_diff[:minute] end
next_arrival()
click to toggle source
# File lib/next_train.rb, line 49 def next_arrival arrivals[0] end
next_arrival_time()
click to toggle source
# File lib/next_train.rb, line 41 def next_arrival_time Time.parse(next_arrival[arrival_time_key]) end
time_until_next_arrival_diff()
click to toggle source
# File lib/next_train.rb, line 37 def time_until_next_arrival_diff Time.diff(next_arrival_time, Time.now, "%N") end