slurpy 0.0.1 → 0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 84eed2ae7245d70deeb2ad3a5234e745cf5270ac
4
- data.tar.gz: 3daf5b8c89349632146e7e690abd15ae18b98e3a
3
+ metadata.gz: 246cc873f48ba260818b7c06b8b11aa479e97f43
4
+ data.tar.gz: f8f2707a84de288e90e87f9796fc151baf2a0c12
5
5
  SHA512:
6
- metadata.gz: 9f5f42c2aca8285ac086f3ef4884932b3262830c5aa30181517e2213a8ab228076d1bb80f6f7b5d8ae9a628d8136471e8c204fa0a459d42dfeb1593fc6101920
7
- data.tar.gz: 94970fa6b47cff5180f9fb486525088908533a5afb3f42d0162921c248ea7a3bed2fe32e0115ca1d3e11bc4d9e15cd4b64f90885315b180fc58ffce4a094422a
6
+ metadata.gz: 0c09b450c8f1aa1aa7101e5529bd70c2090fa50008a8611ec20062187f7ee3d0306af16dbc5b5a624eb36110469dc3040fc2cd7394ed6e4df1df3034ee2b7224
7
+ data.tar.gz: 404f94d25caa42ac760af83f85bd59c929a8ca085c051c79fdae67099ca0f8dc0565fa1f108d6283c4e46b4dfaa07a45800ccd999c83503ec056fb7d32de9e8f
data/README.md CHANGED
@@ -16,11 +16,11 @@ Use by doing the following:
16
16
 
17
17
  $ slurpy next "Day 1" "Convention"
18
18
 
19
- to get the next stop time for any SLU shuttle going from "Day 1 North" to "Convention Seattle".
19
+ to get the next stop time for any SLU shuttle going from "Day 1 North" to "Convention Place".
20
20
 
21
21
  You can also set your defaults in ~/.slurpy like so
22
22
 
23
- $ slurpy config {origin=> "Day 1 North", destination => "Convention Center"}
23
+ $ slurpy config --origin 'Day 1 North' --destination 'Convention Place'
24
24
 
25
25
  and then do
26
26
 
@@ -28,8 +28,8 @@ and then do
28
28
  $ slurpy next --return
29
29
  $ slurpy next "Blackfoot"
30
30
 
31
- * The first will search the times for the default route (Day 1 North -> Convention Center).
32
- * The second will search the times for the default route, inverted (Day 1 North -> Convention Center)
31
+ * The first will search the times for the default route (Day 1 North -> Convention Place).
32
+ * The second will search the times for the default route, inverted (Day 1 North -> Convention Place)
33
33
  * The third will search the times for the default origin (Prime) to Blackfoot
34
34
 
35
35
  ## Contributing
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'slurpy/version'
4
- require 'slurpy/slurpy'
3
+ require_relative 'slurpy/version'
4
+ require_relative 'slurpy/slurpy'
@@ -9,10 +9,12 @@ require 'typhoeus'
9
9
  require 'thor'
10
10
  require 'api_cache'
11
11
  require 'moneta'
12
+ require 'timezone'
12
13
 
13
14
  class Slurpy < Thor
14
15
  DEFAULTS_FILE = "#{Dir.home}/.slurpy"
15
16
  CACHE_FOLDER = '/tmp/slurpy/cache'
17
+ TIMEZONE = 'America/Los_Angeles'
16
18
 
17
19
  BASE_URL = 'http://www.slushuttle.com/Services/JSONPRelay.svc/'
18
20
 
@@ -29,7 +31,7 @@ class Slurpy < Thor
29
31
 
30
32
  option :return, :type => :boolean
31
33
 
32
- desc 'next origin, destination', 'Returns the next routes from A to B'
34
+ desc 'next origin destination', 'Returns the next routes from origin to destination'
33
35
  def next(origin = defaults['origin'], destination = defaults['destination'])
34
36
 
35
37
  origin, destination = destination, origin if options[:return]
@@ -48,7 +50,7 @@ class Slurpy < Thor
48
50
  to_origin_shuttles[route_id] < to_destination_shuttles[route_id]
49
51
  end
50
52
 
51
- Slurpy.error "No shuttles from '#{origin_name}' to '#{destination_name}', sorry. " \
53
+ Slurpy.error "No shuttles from '#{origin_name}' to '#{destination_name}' right now, sorry. " \
52
54
  "See http://www.slushuttle.com/ for more details." \
53
55
  if origin_to_destination_shuttles.empty?
54
56
 
@@ -59,13 +61,34 @@ class Slurpy < Thor
59
61
  end
60
62
  end
61
63
 
64
+ method_option :origin, :type => :string, :required => true
65
+ method_option :destination, :type => :string, :required => true
66
+
67
+ desc 'config', 'Sets the defaults origin and destination'
68
+ def config
69
+
70
+ settings = {
71
+ 'origin' => options[:origin],
72
+ 'destination' => options[:destination]
73
+ }
74
+
75
+ File.open(DEFAULTS_FILE, "w") do |file|
76
+ file.write settings.to_yaml
77
+ end
78
+ end
79
+
62
80
  private #####################################################################
63
81
 
64
82
  def defaults
65
- Slurpy.error 'Slurpy needs params unless .slurpy exists' unless
83
+ Slurpy.error 'Slurpy needs params unless .slurpy exists' unless
66
84
  File.exists?(DEFAULTS_FILE)
67
85
 
68
86
  @defaults ||= ::YAML::load_file(DEFAULTS_FILE)
87
+
88
+ Slurpy.error 'Invalid default origin' unless @defaults['origin']
89
+ Slurpy.error 'Invalid default destination' unless @defaults['destination']
90
+
91
+ @defaults
69
92
  end
70
93
 
71
94
  def self.error(message)
@@ -128,18 +151,18 @@ class Slurpy < Thor
128
151
  def self.get_stop(query)
129
152
  Slurpy.from_cache "stop::#{query}", lambda {
130
153
  infos = request(:stops)
131
- .select { |stop| stop['Description'].include? query }
154
+ .select { |stop| stop['Description'].downcase.include? query.downcase }
132
155
 
133
156
  stops = infos.map{ |stop| stop['Description']}.to_set.to_a
134
157
 
135
158
  error = "No stop matches '#{query}', sorry." if stops.empty?
136
159
 
137
- error = "Your request for stop '#{query}' is not specific enough. " \
138
- "Pick one: #{stops.inspect}" if stops.size > 1
160
+ #error = "Your request for stop '#{query}' is not specific enough. " \
161
+ # "Pick one: #{stops.inspect}" if stops.size > 1
139
162
 
140
163
  Slurpy.error error if error
141
164
 
142
- return infos, stops.first
165
+ return infos, stops
143
166
  }
144
167
  end
145
168
 
@@ -150,14 +173,16 @@ class Slurpy < Thor
150
173
 
151
174
  def self.extract_date(date)
152
175
  epoch_time_in_seconds = date
153
- .to_s
176
+ .to_s
154
177
  .scan(%r(/Date\((\d+)\)/))
155
- .flatten.first
178
+ .flatten.first.to_i / 1000
156
179
 
157
180
  Slurpy.error 'Failed to retrieve date from #{date}' unless epoch_time_in_seconds
158
-
159
- Time.at(epoch_time_in_seconds.to_i).strftime('%R')
181
+
182
+ timezone = Timezone::Zone.new :zone => TIMEZONE
183
+
184
+ timezone.time(Time.at(epoch_time_in_seconds)).strftime('%R')
160
185
  end
161
186
  end
162
187
 
163
- Slurpy.start(ARGV)
188
+ Slurpy.start(ARGV)
@@ -1,3 +1,3 @@
1
1
  module SlurpyMetadata
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1'
3
3
  end
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency "thor"
26
26
  spec.add_runtime_dependency "api_cache"
27
27
  spec.add_runtime_dependency "moneta"
28
+ spec.add_runtime_dependency "timezone"
28
29
  end
@@ -83,36 +83,37 @@ describe "slurpy" do
83
83
 
84
84
  Slurpy.should_receive(:get_times).at_least(:once).times.and_return([
85
85
  {"RouteID" => "1", "RouteStopID" => "1", "StopTimes" =>
86
- [{"DepartureTime" => "\/Date\(0\)/"}, {"DepartureTime" => "\/Date\(10000\)/"}]},
86
+ [{"DepartureTime" => "\/Date\(0\)/"}, {"DepartureTime" => "\/Date\(10000000\)/"}]},
87
87
  {"RouteID" => "1", "RouteStopID" => "2", "StopTimes" =>
88
- [{"DepartureTime" => "\/Date\(10000\)/"}, {"DepartureTime" => "\/Date\(30000\)/"}]},
88
+ [{"DepartureTime" => "\/Date\(10000000\)/"}, {"DepartureTime" => "\/Date\(30000000\)/"}]},
89
89
  {"RouteID" => "2", "RouteStopID" => "1", "StopTimes" =>
90
- [{"DepartureTime" => "\/Date\(1000\)/"}, {"DepartureTime" => "\/Date\(11000\)/"}]},
90
+ [{"DepartureTime" => "\/Date\(1000000\)/"}, {"DepartureTime" => "\/Date\(11000000\)/"}]},
91
91
  {"RouteID" => "2", "RouteStopID" => "2", "StopTimes" =>
92
- [{"DepartureTime" => "\/Date\(11000\)/"}, {"DepartureTime" => "\/Date\(30000\)/"}]}
92
+ [{"DepartureTime" => "\/Date\(11000000\)/"}, {"DepartureTime" => "\/Date\(30000000\)/"}]}
93
93
  ])
94
94
 
95
95
  Slurpy.start(["next", "Day 1", "Convention"])
96
96
 
97
97
  expect(capture(:stdout) { Slurpy.start(["next", "Day 1", "Convention"]) })
98
98
  .to eq("Searching routes from 'Day 1 North' to 'Convention Center'...\n" \
99
- "Route R10 - Departure: 19:00 Arrival: 21:46\n" \
100
- "Route R11 - Departure: 19:16 Arrival: 22:03\n")
99
+ "Route R10 - Departure: 16:00 Arrival: 18:46\n" \
100
+ "Route R11 - Departure: 16:16 Arrival: 19:03\n")
101
101
  end
102
102
 
103
103
  it "errors if no route between a and b exists" do
104
- Slurpy.should_receive(:error).once.with("No shuttles from 'Day 1 North' to 'Convention Center', sorry. " \
104
+ Slurpy.should_receive(:error).once.with("No shuttles from 'Day 1 North' to 'Convention Center' " \
105
+ "right now, sorry. " \
105
106
  "See http://www.slushuttle.com/ for more details.")
106
107
 
107
108
  Slurpy.should_receive(:get_times).at_least(:once).times.and_return([
108
109
  {"RouteID" => "1", "RouteStopID" => "1", "StopTimes" =>
109
- [{"DepartureTime" => "\/Date\(0\)/"}, {"DepartureTime" => "\/Date\(10000\)/"}]},
110
+ [{"DepartureTime" => "\/Date\(0\)/"}, {"DepartureTime" => "\/Date\(10000000\)/"}]},
110
111
  {"RouteID" => "1", "RouteStopID" => "3", "StopTimes" =>
111
- [{"DepartureTime" => "\/Date\(10000\)/"}, {"DepartureTime" => "\/Date\(30000\)/"}]},
112
+ [{"DepartureTime" => "\/Date\(10000000\)/"}, {"DepartureTime" => "\/Date\(30000000\)/"}]},
112
113
  {"RouteID" => "2", "RouteStopID" => "1", "StopTimes" =>
113
- [{"DepartureTime" => "\/Date\(1000\)/"}, {"DepartureTime" => "\/Date\(11000\)/"}]},
114
+ [{"DepartureTime" => "\/Date\(1000000\)/"}, {"DepartureTime" => "\/Date\(11000000\)/"}]},
114
115
  {"RouteID" => "2", "RouteStopID" => "4", "StopTimes" =>
115
- [{"DepartureTime" => "\/Date\(11000\)/"}, {"DepartureTime" => "\/Date\(30000\)/"}]}
116
+ [{"DepartureTime" => "\/Date\(11000000\)/"}, {"DepartureTime" => "\/Date\(30000000\)/"}]}
116
117
  ])
117
118
 
118
119
  Slurpy.start(["next", "Day 1", "Convention"])
@@ -121,7 +122,7 @@ describe "slurpy" do
121
122
 
122
123
  describe "extract_date" do
123
124
  it "converts an epoch date to time" do
124
- Slurpy.extract_date("\/Date\(10000\)/").should eql "21:46"
125
+ Slurpy.extract_date("\/Date\(1388318968000\)/").should eql "04:09"
125
126
  end
126
127
  end
127
128
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slurpy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: '0.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Della Corte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-15 00:00:00.000000000 Z
11
+ date: 2013-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: timezone
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Retrieves the SLUShuttle times from the command line.
112
126
  email:
113
127
  - andreadellacorte85@gmail.com
@@ -124,7 +138,6 @@ files:
124
138
  - README.md
125
139
  - Rakefile
126
140
  - bin/slurpy
127
- - lib/rubocop_report
128
141
  - lib/slurpy.rb
129
142
  - lib/slurpy/slurpy.rb
130
143
  - lib/slurpy/version.rb
@@ -159,4 +172,3 @@ summary: Command line interface for SLUShuttle.
159
172
  test_files:
160
173
  - spec/slurpy_spec.rb
161
174
  - spec/spec_helper.rb
162
- has_rdoc:
@@ -1,19 +0,0 @@
1
- Inspecting 3 files
2
- .EC
3
-
4
- Offences:
5
-
6
- slurpy/slurpy.rb:29:11: E: unexpected token tAMPER
7
- && to_origin_shuttles[route_id] < to_destination_shuttles[route_id]
8
- ^
9
- slurpy/slurpy.rb:49:11: E: unexpected token tAMPER
10
- && time['RouteStopID'] == stop_id
11
- ^
12
- slurpy/slurpy.rb:128:5: E: unexpected token tCONSTANT
13
- Time.at(epoch_time_in_seconds).strftime("%R")
14
- ^^^^
15
- slurpy/version.rb:1:1: C: Missing top-level module documentation comment.
16
- module SlurpyMetadata
17
- ^^^^^^
18
-
19
- 3 files inspected, 4 offences detected