japan_etc 0.6.0 → 0.7.0
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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +12 -3
- data/database/japan_etc_tollbooths.csv +2915 -2884
- data/japan_etc.gemspec +1 -0
- data/lib/japan_etc/database.rb +19 -2
- data/lib/japan_etc/database_provider/base.rb +6 -4
- data/lib/japan_etc/database_provider/{nexco.rb → base_nexco.rb} +30 -18
- data/lib/japan_etc/database_provider/hanshin_expressway.rb +6 -3
- data/lib/japan_etc/database_provider/metropolitan_expressway.rb +6 -3
- data/lib/japan_etc/database_provider/nagoya_expressway.rb +6 -3
- data/lib/japan_etc/database_provider/nexco_central.rb +13 -0
- data/lib/japan_etc/database_provider/nexco_east.rb +13 -0
- data/lib/japan_etc/database_provider/nexco_west.rb +13 -0
- data/lib/japan_etc/database_provider/past_database.csv +2884 -0
- data/lib/japan_etc/database_provider/past_database.rb +49 -0
- data/lib/japan_etc/road.rb +1 -1
- data/lib/japan_etc/tollbooth.rb +39 -7
- data/lib/japan_etc/util.rb +7 -1
- data/lib/japan_etc/version.rb +1 -1
- metadata +22 -4
- data/lib/japan_etc/database_provider.rb +0 -6
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'japan_etc/database_provider/base'
|
4
|
+
require 'japan_etc/tollbooth'
|
5
|
+
require 'faraday'
|
6
|
+
require 'nokogiri'
|
7
|
+
|
8
|
+
module JapanETC
|
9
|
+
module DatabaseProvider
|
10
|
+
# http://www.nagoya-expressway.or.jp/etc/etc-lane.html
|
11
|
+
class PastDatabase < Base
|
12
|
+
def source_id
|
13
|
+
'PastDatabase'
|
14
|
+
end
|
15
|
+
|
16
|
+
def fetch_tollbooths
|
17
|
+
rows.map do |row|
|
18
|
+
create_tollbooth_from_row(row)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_tollbooth_from_row(row)
|
23
|
+
identifier = Tollbooth::Identifier.from(row[0])
|
24
|
+
|
25
|
+
road = Road.new(row[1], row[2])
|
26
|
+
|
27
|
+
Tollbooth.new(
|
28
|
+
identifier: identifier,
|
29
|
+
road: road,
|
30
|
+
name: row[3],
|
31
|
+
direction: row[4],
|
32
|
+
entrance_or_exit: row[5],
|
33
|
+
note: row[6],
|
34
|
+
source: source_id,
|
35
|
+
priority: -1
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
def rows
|
40
|
+
CSV.parse(csv, headers: :first_row)
|
41
|
+
end
|
42
|
+
|
43
|
+
def csv
|
44
|
+
path = File.join(__dir__, 'past_database.csv')
|
45
|
+
File.read(path)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/japan_etc/road.rb
CHANGED
@@ -23,7 +23,7 @@ module JapanETC
|
|
23
23
|
def initialize(name, route_name = nil)
|
24
24
|
raise ValidationError, '#name cannot be nil' if name.nil?
|
25
25
|
|
26
|
-
super(normalize(name), normalize(route_name))
|
26
|
+
super(remove_whitespaces(normalize(name)), remove_whitespaces(normalize(route_name)))
|
27
27
|
end
|
28
28
|
|
29
29
|
def abbreviation
|
data/lib/japan_etc/tollbooth.rb
CHANGED
@@ -11,7 +11,8 @@ module JapanETC
|
|
11
11
|
include Comparable
|
12
12
|
include Util
|
13
13
|
|
14
|
-
attr_accessor :identifier, :road, :name, :entrance_or_exit, :direction, :notes
|
14
|
+
attr_accessor :identifier, :road, :name, :entrance_or_exit, :direction, :notes,
|
15
|
+
:source, :priority
|
15
16
|
|
16
17
|
def self.create(
|
17
18
|
road_number:,
|
@@ -21,23 +22,46 @@ module JapanETC
|
|
21
22
|
name:,
|
22
23
|
direction: nil,
|
23
24
|
entrance_or_exit: nil,
|
24
|
-
note: nil
|
25
|
+
note: nil,
|
26
|
+
source: nil,
|
27
|
+
priority: 0
|
25
28
|
)
|
26
29
|
identifier = Identifier.new(road_number, tollbooth_number)
|
27
30
|
road = Road.new(road_name, route_name)
|
28
|
-
|
31
|
+
|
32
|
+
new(
|
33
|
+
identifier: identifier,
|
34
|
+
road: road,
|
35
|
+
name: name,
|
36
|
+
direction: direction,
|
37
|
+
entrance_or_exit: entrance_or_exit,
|
38
|
+
note: note,
|
39
|
+
source: source,
|
40
|
+
priority: priority
|
41
|
+
)
|
29
42
|
end
|
30
43
|
|
31
|
-
def initialize(
|
44
|
+
def initialize(
|
45
|
+
identifier:,
|
46
|
+
road:,
|
47
|
+
name:,
|
48
|
+
direction:,
|
49
|
+
entrance_or_exit:,
|
50
|
+
note:,
|
51
|
+
source:,
|
52
|
+
priority:
|
53
|
+
)
|
32
54
|
raise ValidationError if identifier.nil? || road.nil? || name.nil?
|
33
55
|
|
34
56
|
@identifier = identifier
|
35
57
|
@road = road
|
36
|
-
@name = normalize(name)
|
58
|
+
@name = remove_whitespaces(normalize(name))
|
37
59
|
@direction = direction
|
38
60
|
@entrance_or_exit = entrance_or_exit
|
39
61
|
@notes = []
|
40
62
|
notes << normalize(note) if note
|
63
|
+
@source = source
|
64
|
+
@priority = priority
|
41
65
|
|
42
66
|
normalize!
|
43
67
|
end
|
@@ -61,10 +85,13 @@ module JapanETC
|
|
61
85
|
result = identifier <=> other.identifier
|
62
86
|
return result unless result.zero?
|
63
87
|
|
88
|
+
result = priority <=> other.priority
|
89
|
+
return -result unless result.zero? # Tollbooth with higher priority comes first
|
90
|
+
|
64
91
|
return -1 if !obsolete? && other.obsolete?
|
65
92
|
return 1 if obsolete? && !other.obsolete?
|
66
93
|
|
67
|
-
[
|
94
|
+
%i[road name source].each do |attribute|
|
68
95
|
result = send(attribute) <=> other.send(attribute)
|
69
96
|
return result unless result.zero?
|
70
97
|
end
|
@@ -79,7 +106,8 @@ module JapanETC
|
|
79
106
|
name,
|
80
107
|
direction,
|
81
108
|
entrance_or_exit,
|
82
|
-
notes.empty? ? nil : notes.join(' ')
|
109
|
+
notes.empty? ? nil : notes.join(' '),
|
110
|
+
source
|
83
111
|
].flatten
|
84
112
|
end
|
85
113
|
|
@@ -205,6 +233,10 @@ module JapanETC
|
|
205
233
|
include Comparable
|
206
234
|
include Util
|
207
235
|
|
236
|
+
def self.from(string)
|
237
|
+
new(*string.split('-'))
|
238
|
+
end
|
239
|
+
|
208
240
|
def initialize(road_number, tollbooth_number)
|
209
241
|
road_number = convert_to_integer(road_number)
|
210
242
|
raise ValidationError, '#road_number cannot be nil' if road_number.nil?
|
data/lib/japan_etc/util.rb
CHANGED
@@ -7,7 +7,7 @@ module JapanETC
|
|
7
7
|
def normalize(string)
|
8
8
|
return nil unless string
|
9
9
|
|
10
|
-
convert_fullwidth_characters_to_halfwidth(string)
|
10
|
+
convert_fullwidth_characters_to_halfwidth(string)
|
11
11
|
end
|
12
12
|
|
13
13
|
def convert_fullwidth_characters_to_halfwidth(string)
|
@@ -16,6 +16,12 @@ module JapanETC
|
|
16
16
|
string.tr(' A-Za-z0-9', ' A-Za-z0-9')
|
17
17
|
end
|
18
18
|
|
19
|
+
def remove_whitespaces(string)
|
20
|
+
return nil unless string
|
21
|
+
|
22
|
+
string.tr(' ', '')
|
23
|
+
end
|
24
|
+
|
19
25
|
def convert_to_integer(object)
|
20
26
|
case object
|
21
27
|
when Numeric
|
data/lib/japan_etc/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: japan_etc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuji Nakayama
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: addressable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: faraday
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,12 +116,16 @@ files:
|
|
102
116
|
- japan_etc.gemspec
|
103
117
|
- lib/japan_etc.rb
|
104
118
|
- lib/japan_etc/database.rb
|
105
|
-
- lib/japan_etc/database_provider.rb
|
106
119
|
- lib/japan_etc/database_provider/base.rb
|
120
|
+
- lib/japan_etc/database_provider/base_nexco.rb
|
107
121
|
- lib/japan_etc/database_provider/hanshin_expressway.rb
|
108
122
|
- lib/japan_etc/database_provider/metropolitan_expressway.rb
|
109
123
|
- lib/japan_etc/database_provider/nagoya_expressway.rb
|
110
|
-
- lib/japan_etc/database_provider/
|
124
|
+
- lib/japan_etc/database_provider/nexco_central.rb
|
125
|
+
- lib/japan_etc/database_provider/nexco_east.rb
|
126
|
+
- lib/japan_etc/database_provider/nexco_west.rb
|
127
|
+
- lib/japan_etc/database_provider/past_database.csv
|
128
|
+
- lib/japan_etc/database_provider/past_database.rb
|
111
129
|
- lib/japan_etc/direction.rb
|
112
130
|
- lib/japan_etc/entrance_or_exit.rb
|
113
131
|
- lib/japan_etc/error.rb
|