gasman-bahn 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +3 -0
- data/lib/bahn.rb +16 -3
- metadata +2 -2
data/History.txt
CHANGED
data/lib/bahn.rb
CHANGED
@@ -4,9 +4,10 @@ require 'json'
|
|
4
4
|
require 'iconv'
|
5
5
|
require 'hpricot'
|
6
6
|
require 'cgi'
|
7
|
+
require 'digest/sha1'
|
7
8
|
|
8
9
|
module Bahn
|
9
|
-
VERSION = '1.0.
|
10
|
+
VERSION = '1.0.1'
|
10
11
|
|
11
12
|
# Represents a time of day on a 24-hour clock, without implying any particular date.
|
12
13
|
class ClockTime < Time
|
@@ -291,12 +292,19 @@ module Bahn
|
|
291
292
|
end
|
292
293
|
|
293
294
|
# Returns a hash code which will match for any two Service objects that stop at the same list of
|
294
|
-
# stations at the same times.
|
295
|
-
# do not expose unique IDs for services)
|
295
|
+
# stations at the same times.
|
296
296
|
def hash
|
297
297
|
stops.collect{|stop| stop.subhash}.hash
|
298
298
|
end
|
299
299
|
|
300
|
+
# Returns a hash code which will match for any two Service objects that stop at the same list of
|
301
|
+
# stations at the same times; like hash, but using SHA1 to make it more collision-resistant.
|
302
|
+
# (This is the nearest thing we have to a unique ID, as Deutsche Bahn do not expose
|
303
|
+
# unique IDs for services)
|
304
|
+
def long_hash
|
305
|
+
Digest::SHA1.hexdigest(stops.collect{|stop| stop.long_hash_element}.join)
|
306
|
+
end
|
307
|
+
|
300
308
|
# Returns an array of strings indicating the features of this train, as listed as 'Comments:' on
|
301
309
|
# the Deutsche Bahn website; e.g. "Subject to compulsory reservation", "Sleeping-car". There
|
302
310
|
# doesn't seem to be a consistent format for these.
|
@@ -442,6 +450,11 @@ module Bahn
|
|
442
450
|
[@station.id, departure_time, arrival_time].hash
|
443
451
|
end
|
444
452
|
|
453
|
+
# alternative implementation, because standard Ruby hashes are probably not collision-resistant enough
|
454
|
+
def long_hash_element # :nodoc:
|
455
|
+
"[#{@station.id},#{departure_time},#{arrival_time}]"
|
456
|
+
end
|
457
|
+
|
445
458
|
# =====
|
446
459
|
private
|
447
460
|
# =====
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gasman-bahn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Westcott
|
@@ -41,7 +41,7 @@ files:
|
|
41
41
|
- lib/bahn.rb
|
42
42
|
- test/test_bahn.rb
|
43
43
|
has_rdoc: true
|
44
|
-
homepage:
|
44
|
+
homepage: http://github.com/gasman/bahn/tree/master
|
45
45
|
post_install_message:
|
46
46
|
rdoc_options:
|
47
47
|
- --main
|