journey_planner 0.0.7 → 0.0.8

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: 51a282441331e412fef3cbffcfed99de9f63fe0b
4
- data.tar.gz: 42a5108e049ebf722d04a904ff86deb0c921e713
3
+ metadata.gz: aa804b245593378c53df6576d5b6b4b8c157ae2b
4
+ data.tar.gz: 5f1df6f9c52b9abbb26221c2b86b8e2ef97b7a6d
5
5
  SHA512:
6
- metadata.gz: a3a320688af4b416ba283a2f157ec39df814feb3ee585956449595fdeb33344450e8a333baf0d8e01088a6cc7f9bd46ecb54142a6072cd2caf2264a6de08a6ed
7
- data.tar.gz: b12769f311da7a5a7f833af05512b2cc154ee54e17784c491100aee989ed8fa36bd2be9a2a7737063ea0f5775ae9a1b7c92d8e19ad3736a09051557d7e64a22d
6
+ metadata.gz: 4464c10376d4848348d8316640b1faa563b579aeca9c14a8559142203e0a308fb2174add2efc8191ba78070366df157d219c712c7fc71faa7f7cb310122be618
7
+ data.tar.gz: 95208206d05bb3bb6561057201943dd25420c772e068dbdeac1f44b278d0158d6b5bfc46d4935fb1ef66a0e2857d728ededc517180c4faa7dba1d0c8bb3eee95
data/README.md CHANGED
@@ -34,14 +34,121 @@ journeys = client.get_journeys from: "old street underground station", to: "oxfo
34
34
 
35
35
  ```
36
36
 
37
- Methods you can play with:
37
+ ### Methods you can play with:
38
+
39
+ The `instructions` method returns a hash of instructions, with the keys as departure and arrival times, and the values as arrays of verbal instructions.
38
40
 
39
41
  ```ruby
40
42
  journeys.first.instructions
41
- # => ["Northern line to Euston / Northern line towards Edgware, or High Barnet", "Victoria line to Oxford Circus / Victoria line towards Brixton"]
43
+ # {"Sep 5 2014 16:21 - Sep 5 2014 16:27"=>["Northern line to Euston / Northern line towards Edgware, Mill Hill East, or High Barnet"],
44
+ # "Sep 5 2014 16:32 - Sep 5 2014 16:35"=>["Victoria line to Oxford Circus / Victoria line towards Brixton"]}
45
+ ```
46
+
47
+ ### Integrating with Google Maps
48
+
49
+ Setting up a simple Sinatra app:
50
+
51
+ ```ruby
52
+
53
+ require 'sinatra'
54
+ require 'sinatra/json'
55
+ require 'journey_planner'
56
+
57
+ get '/' do
58
+ erb :index
59
+ end
60
+
61
+ get '/maps' do
62
+ client = TFLJourneyPlanner::Client.new(app_id: ENV["TFL_ID"], app_key: ENV["TFL_KEY"])
63
+ journeys = client.get_journeys from: "old street underground station", to: "oxford circus underground station"
64
+ json journeys.first.map_path
65
+ end
66
+
67
+ ```
68
+
69
+ Your HTML and Javascript (assuming JQuery, the Google Maps API, and GMapsJS have already been linked)
70
+
71
+ ```html
72
+ <div id="map" style="height: 500px; width: 500px"></div>
73
+ ```
74
+
75
+ ```javascript
76
+ $(document).ready(function(){
77
+
78
+ $.get('/maps', function(coordinates){
79
+
80
+ var map = new GMaps({
81
+ div: '#map',
82
+ lat: coordinates[0][0],
83
+ lng: coordinates[0][1]
84
+
85
+ });
86
+
87
+ map.drawPolyline({
88
+ path: coordinates,
89
+ strokeColor: '#131540',
90
+ strokeOpacity: 0.6,
91
+ strokeWeight: 6
92
+ });
93
+ })
94
+
95
+ })
42
96
  ```
43
97
 
98
+ On launching your app, you should find that GMaps has created a polyline from the TFL Journey Planner path coordinates.
99
+
100
+ ![Image1](https://raw.githubusercontent.com/jpatel531/journey_planner_gem/master/screenshots/jp_gmaps_ex.jpg)
101
+
102
+ ###Search Options
103
+
104
+ ```ruby
105
+ client.get_journeys
106
+
107
+ from: #=> Origin of the journey (if in coordinate format then must be "longitude,latitude")
108
+
109
+ to: #=> Destination of the journey (if in coordinate format then must be "longitude,latitude")
110
+
111
+ via: #=> Travel through (if in coordinate format then must be "longitude,latidude")
112
+
113
+ national_search: #=> Does the journey cover stops outside London? eg. "nationalSearch=true". Set to false by default
114
+
115
+ date: #=> The date must be in yyyyMMdd format
116
+
117
+ time: #=> The time must be in HHmm format
118
+
119
+ time_is: #=> Does the time given relate to arrival or leaving time? Possible options: "departing" | "arriving". Set to Departing by default
120
+
121
+ journey_preference: #=> The journey preference eg possible options: "leastinterchange" | "leasttime" | "leastwalking"
122
+
123
+ mode: #=> The mode must be a comma separated list of modes. eg possible options: "public-bus,overground,train,tube,coach,dlr,cablecar,tram,river,walking,cycle"
124
+
125
+ accessibility_preference: #=> The accessibility preference must be a comma separated list eg. "noSolidStairs,noEscalators,noElevators,stepFreeToVehicle,stepFreeToPlatform"
126
+
127
+ from_name: #=> From name is the location name associated with a from coordinate
44
128
 
129
+ to_name: #=> To name is the label location associated with a to coordinate
130
+
131
+ via_name: #=> Via name is the location name associated with a via coordinate
132
+
133
+ max_transfer_minutes: #=> The max walking time in minutes for transfer eg. "120"
134
+
135
+ min_transfer_minutes: #=> The max walking time in minutes for journeys eg. "120"
136
+
137
+ walking_speed: #=> The walking speed. eg possible options: "slow" | "average" | "fast"
138
+
139
+ cycle_preference: #=> The cycle preference. eg possible options: "allTheWay" | "leaveAtStation" | "takeOnTransport" | "cycleHire"
140
+
141
+ adjustment: #=> Time adjustment command. eg possible options: "TripFirst" | "TripLast"
142
+
143
+ bike_proficiency: #=> A comma separated list of cycling proficiency levels. eg possible options: "easy,moderate,fast"
144
+
145
+ alternative_cycle: #=> Set to True to generate an additional journey consisting of cycling only, if possible. Default value is false. eg. alternative_cycle: true
146
+
147
+ alternative_walking: #=> Set to true to generate an additional journey consisting of walking only, if possible. Default value is false. eg. alternative_walking: true
148
+
149
+ apply_html_markup: #=> Flag to determine whether certain text (e.g. walking instructions) should be output with HTML tags or not.
150
+
151
+ ```
45
152
 
46
153
  ## Contributing
47
154
 
data/lib/journey.rb CHANGED
@@ -1,16 +1,22 @@
1
+ require_relative 'time_helpers'
2
+
1
3
  module TFLJourneyPlanner
2
4
 
3
5
  class Journey < RecursiveOpenStruct
6
+
7
+ include TimeHelpers
8
+
9
+
4
10
  def instructions
5
11
  array = []
6
12
  legs.each do |leg|
7
13
  if leg.instruction.steps.any?
8
- leg.instruction.steps.each {|step| array << step.description}
14
+ leg.instruction.steps.each {|step| array << [ "#{prettify leg.departure_time} - #{prettify leg.arrival_time}", step.description]}
9
15
  else
10
- array << leg.instruction.summary + " / " + leg.instruction.detailed
16
+ array << ["#{prettify leg.departure_time} - #{prettify leg.arrival_time}", leg.instruction.summary + " / " + leg.instruction.detailed]
11
17
  end
12
18
  end
13
- return array
19
+ array.inject(Hash.new{ |h,k| h[k]=[] }){ |h,(k,v)| h[k] << v; h }
14
20
  end
15
21
 
16
22
  def map_path
@@ -1,3 +1,3 @@
1
1
  module TFLJourneyPlanner
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -0,0 +1,11 @@
1
+ require 'time'
2
+
3
+ module TimeHelpers
4
+
5
+ def prettify time
6
+ t = Time.parse time
7
+ t.strftime("%b%e %Y %H:%M")
8
+ end
9
+
10
+
11
+ end
Binary file
data/spec/journey_spec.rb CHANGED
@@ -7,12 +7,8 @@ describe TFLJourneyPlanner::Journey do
7
7
 
8
8
  it "should return an array of instructions" do
9
9
  VCR.use_cassette "hello", record: :none do
10
- array = ["Continue along Fruen Road for 143 metres (2 minutes, 8 seconds).",
11
- "Turn right on to Bedfont Lane, continue for 172 metres (2 minutes, 33 seconds).",
12
- "H25 bus to Bedfont Library / H25 bus towards Hatton Cross",
13
- "Continue along Staines Road for 64 metres (0 minutes, 57 seconds).",
14
- "Turn left on to Grovestile Waye, continue for 95 metres (1 minute, 21 seconds)."]
15
- expect(journeys[0].instructions).to eq array
10
+ hash = {"Sep 3 2014 16:58 - Sep 3 2014 17:03"=>["Continue along Fruen Road for 143 metres (2 minutes, 8 seconds).", "Turn right on to Bedfont Lane, continue for 172 metres (2 minutes, 33 seconds)."], "Sep 3 2014 17:03 - Sep 3 2014 17:06"=>["H25 bus to Bedfont Library / H25 bus towards Hatton Cross"], "Sep 3 2014 17:06 - Sep 3 2014 17:09"=>["Continue along Staines Road for 64 metres (0 minutes, 57 seconds).", "Turn left on to Grovestile Waye, continue for 95 metres (1 minute, 21 seconds)."]}
11
+ expect(journeys[0].instructions).to eq hash
16
12
  end
17
13
  end
18
14
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: journey_planner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - jpatel531
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-04 00:00:00.000000000 Z
11
+ date: 2014-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,6 +56,8 @@ files:
56
56
  - lib/journey_planner/version.rb
57
57
  - lib/results.rb
58
58
  - lib/rubify_keys.rb
59
+ - lib/time_helpers.rb
60
+ - screenshots/jp_gmaps_ex.jpg
59
61
  - spec/client_spec.rb
60
62
  - spec/fixtures/tfl_jp_casettes/hello.yml
61
63
  - spec/journey_spec.rb