ekispert 0.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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +48 -0
  3. data/.gitignore +14 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +110 -0
  6. data/.travis.yml +5 -0
  7. data/CODE_OF_CONDUCT.md +74 -0
  8. data/Gemfile +6 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +118 -0
  11. data/Rakefile +6 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/ekispert-sdk-ruby.gemspec +31 -0
  15. data/example/point_station.rb +20 -0
  16. data/example/search_course.rb +116 -0
  17. data/lib/ekispert.rb +43 -0
  18. data/lib/ekispert/client.rb +58 -0
  19. data/lib/ekispert/config.rb +30 -0
  20. data/lib/ekispert/course.rb +124 -0
  21. data/lib/ekispert/course/pass_status.rb +34 -0
  22. data/lib/ekispert/course/price.rb +71 -0
  23. data/lib/ekispert/course/route.rb +33 -0
  24. data/lib/ekispert/course/route/line.rb +86 -0
  25. data/lib/ekispert/course/route/line/arrival_state.rb +25 -0
  26. data/lib/ekispert/course/route/line/arrival_state/gate.rb +22 -0
  27. data/lib/ekispert/course/route/line/corporation.rb +22 -0
  28. data/lib/ekispert/course/route/line/departure_state.rb +25 -0
  29. data/lib/ekispert/course/route/line/departure_state/gate.rb +22 -0
  30. data/lib/ekispert/course/route/line/line_symbol.rb +22 -0
  31. data/lib/ekispert/course/route/line/stop.rb +30 -0
  32. data/lib/ekispert/course/route/line/stop/arrival_state.rb +28 -0
  33. data/lib/ekispert/course/route/line/stop/departure_state.rb +28 -0
  34. data/lib/ekispert/course/route/line/stop/point.rb +28 -0
  35. data/lib/ekispert/course/route/line/stop/point/prefecture.rb +26 -0
  36. data/lib/ekispert/course/route/line/stop/point/station.rb +30 -0
  37. data/lib/ekispert/course/route/point.rb +49 -0
  38. data/lib/ekispert/course/route/point/prefecture.rb +22 -0
  39. data/lib/ekispert/course/route/point/station.rb +34 -0
  40. data/lib/ekispert/data_version.rb +35 -0
  41. data/lib/ekispert/ekispert_base.rb +69 -0
  42. data/lib/ekispert/error.rb +29 -0
  43. data/lib/ekispert/information.rb +58 -0
  44. data/lib/ekispert/information/corporation.rb +20 -0
  45. data/lib/ekispert/information/exit.rb +24 -0
  46. data/lib/ekispert/information/line.rb +35 -0
  47. data/lib/ekispert/information/welfare_facilities.rb +24 -0
  48. data/lib/ekispert/point.rb +41 -0
  49. data/lib/ekispert/point/prefecture.rb +18 -0
  50. data/lib/ekispert/point/station.rb +65 -0
  51. data/lib/ekispert/point/station/gate_group.rb +14 -0
  52. data/lib/ekispert/point/station/gate_group/gate.rb +28 -0
  53. data/lib/ekispert/util.rb +11 -0
  54. data/lib/ekispert/version.rb +3 -0
  55. metadata +213 -0
@@ -0,0 +1,71 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Price < EkispertBase
4
+ attr_accessor :name_list, :oneway_list, :rate_list, :round_list
5
+ attr_accessor :revision_status_list, :revision_status_comment_list, :type_list
6
+ attr_accessor :line_list, :pass_status
7
+
8
+ def initialize(element=nil)
9
+ @name_list = []
10
+ @oneway_list = []
11
+ @rate_list = []
12
+ @round_list = []
13
+ @revision_status_list = []
14
+ @revision_status_comment_list = []
15
+ @type_list = []
16
+ @line_list = [] # Use Course#relate_price_to_line
17
+ return if element.nil?
18
+
19
+ super(element)
20
+ end
21
+
22
+ def name
23
+ @name_list[0]&.text
24
+ end
25
+
26
+ def oneway
27
+ @oneway_list[0]&.text.to_i
28
+ end
29
+
30
+ def rate
31
+ @rate_list[0]&.text.to_i
32
+ end
33
+
34
+ def round
35
+ @round_list[0]&.text.to_i
36
+ end
37
+
38
+ def revision_status
39
+ @revision_status_list[0]&.text
40
+ end
41
+
42
+ def revision_status_comment
43
+ @revision_status_comment_list[0]&.text
44
+ end
45
+
46
+ def type
47
+ @type_list[0]&.text
48
+ end
49
+
50
+ def fare?
51
+ kind == 'Fare'
52
+ end
53
+
54
+ def charge?
55
+ kind == 'Charge'
56
+ end
57
+
58
+ def teiki?
59
+ kind.match?(/^Teiki\d{1,2}$/)
60
+ end
61
+
62
+ class Name < EkispertBase; end
63
+ class Oneway < EkispertBase; end
64
+ class Rate < EkispertBase; end
65
+ class Round < EkispertBase; end
66
+ class RevisionStatus < EkispertBase; end
67
+ class RevisionStatusComment < EkispertBase; end
68
+ class Type < EkispertBase; end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,33 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ attr_accessor :line_list, :point_list
5
+
6
+ def initialize(element)
7
+ @line_list = []
8
+ @point_list = []
9
+ super(element)
10
+ end
11
+
12
+ def departure_point
13
+ @point_list[0]
14
+ end
15
+
16
+ def arrival_point
17
+ @point_list[-1]
18
+ end
19
+
20
+ def departure_time
21
+ @line_list[0].departure_state_list[0].datetime
22
+ end
23
+
24
+ def arrival_time
25
+ @line_list[-1].arrival_state_list[0].datetime
26
+ end
27
+
28
+ def total_required_time
29
+ time_other.to_i + time_on_board.to_i + time_walk.to_i
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,86 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ attr_accessor :arrival_state_list, :departure_state_list
6
+ attr_accessor :corporation_list, :color_list
7
+ attr_accessor :destination_list, :name_list, :number_list
8
+ attr_accessor :time_reliability_list, :type_list, :typical_name_list
9
+ attr_accessor :line_symbol_list, :stop_list
10
+ attr_accessor :fare, :charge, :teiki1, :teiki3, :teiki6, :teiki12
11
+
12
+ def initialize(element)
13
+ @arrival_state_list = []
14
+ @departure_state_list = []
15
+ @corporation_list = []
16
+ @color_list = []
17
+ @destination_list = []
18
+ @line_symbol_list = []
19
+ @name_list = []
20
+ @number_list = []
21
+ @time_reliability_list = []
22
+ @type_list = []
23
+ @typical_name_list = []
24
+ @stop_list = []
25
+ super(element)
26
+ @stop_list.each do |stop|
27
+ stop.arrival_state&.set_date(departure_state.datetime)
28
+ stop.departure_state&.set_date(departure_state.datetime)
29
+ end
30
+ end
31
+
32
+ def arrival_state
33
+ @arrival_state_list[0]
34
+ end
35
+
36
+ def departure_state
37
+ @departure_state_list[0]
38
+ end
39
+
40
+ def corporation
41
+ @corporation_list[0]
42
+ end
43
+
44
+ def color
45
+ @color_list[0].text
46
+ end
47
+
48
+ def destination
49
+ @destination_list[0].text
50
+ end
51
+
52
+ def line_symbol
53
+ @line_symbol_list[0]
54
+ end
55
+
56
+ def name
57
+ @name_list[0].text
58
+ end
59
+
60
+ def number
61
+ @number_list[0]&.text
62
+ end
63
+
64
+ def time_reliability
65
+ @time_reliability_list[0].text
66
+ end
67
+
68
+ def type
69
+ @type_list[0]&.text
70
+ end
71
+
72
+ def typical_name
73
+ @typical_name_list[0]&.text
74
+ end
75
+
76
+ class Color < EkispertBase; end
77
+ class Destination < EkispertBase; end
78
+ class Name < EkispertBase; end
79
+ class Number < EkispertBase; end
80
+ class TimeReliability < EkispertBase; end
81
+ class Type < EkispertBase; end
82
+ class TypicalName < EkispertBase; end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,25 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class ArrivalState < EkispertBase
6
+ attr_accessor :gate_list, :datetime_list, :type_list
7
+
8
+ def initialize(element)
9
+ @gate_list = []
10
+ @datetime_list = []
11
+ @type_list = []
12
+ super(element)
13
+ end
14
+
15
+ def datetime
16
+ DateTime.parse(@datetime_list[0].text)
17
+ end
18
+
19
+ class Datetime < EkispertBase; end
20
+ class Type < EkispertBase; end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class ArrivalState < EkispertBase
6
+ class Gate < EkispertBase
7
+ attr_accessor :geo_point, :name_list
8
+
9
+ def initialize(element)
10
+ @geo_point_list = []
11
+ @name_list = []
12
+ super(element)
13
+ end
14
+
15
+ class GeoPoint < EkispertBase; end
16
+ class Name < EkispertBase; end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class Corporation < EkispertBase
6
+ attr_accessor :name_list
7
+
8
+ def initialize(element)
9
+ @name_list = []
10
+ super(element)
11
+ end
12
+
13
+ def name
14
+ @name_list[0].text
15
+ end
16
+
17
+ class Name < EkispertBase; end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class DepartureState < EkispertBase
6
+ attr_accessor :gate_list, :datetime_list, :type_list
7
+
8
+ def initialize(element)
9
+ @gate_list = []
10
+ @datetime_list = []
11
+ @type_list = []
12
+ super(element)
13
+ end
14
+
15
+ def datetime
16
+ DateTime.parse(@datetime_list[0].text)
17
+ end
18
+
19
+ class Datetime < EkispertBase; end
20
+ class Type < EkispertBase; end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class DepartureState < EkispertBase
6
+ class Gate < EkispertBase
7
+ attr_accessor :geo_point, :name_list
8
+
9
+ def initialize(element)
10
+ @geo_point_list = []
11
+ @name_list = []
12
+ super(element)
13
+ end
14
+
15
+ class GeoPoint < EkispertBase; end
16
+ class Name < EkispertBase; end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class LineSymbol < EkispertBase
6
+ attr_reader :name_list
7
+
8
+ def initialize(element)
9
+ @name_list = []
10
+ super(element)
11
+ end
12
+
13
+ def name
14
+ @name_list[0].text
15
+ end
16
+
17
+ class Name < EkispertBase; end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class Stop < EkispertBase
6
+ attr_accessor :arrival_state_list, :departure_state_list, :point_list
7
+
8
+ def initialize(element)
9
+ @arrival_state_list = []
10
+ @departure_state_list = []
11
+ @point_list = []
12
+ super(element)
13
+ end
14
+
15
+ def arrival_state
16
+ @arrival_state_list[0]
17
+ end
18
+
19
+ def departure_state
20
+ @departure_state_list[0]
21
+ end
22
+
23
+ def point
24
+ @point_list[0]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class Stop < EkispertBase
6
+ class ArrivalState < EkispertBase
7
+ attr_accessor :datetime_list, :datetime
8
+
9
+ def initialize(element)
10
+ @datetime_list = []
11
+ super(element)
12
+ end
13
+
14
+ # Because of emptiness of date information at ArrivalState, set date additionaly
15
+ # ex. <Datetime operation="today">12:57:00+09:00</Datetime>
16
+ def set_date(date)
17
+ time = @datetime_list[0].text.split(/[:\+]/).first(3).map(&:to_i)
18
+ @datetime = DateTime.new(date.year, date.month, date.day, *time) rescue DateTime.now
19
+ @datetime += 1 if @datetime_list[0].operation == 'yesterday'
20
+ end
21
+
22
+ class Datetime < EkispertBase; end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class Stop < EkispertBase
6
+ class DepartureState < EkispertBase
7
+ attr_accessor :datetime_list, :datetime
8
+
9
+ def initialize(element)
10
+ @datetime_list = []
11
+ super(element)
12
+ end
13
+
14
+ # Because of emptiness of date information at DepartureState, set date additionaly
15
+ # ex. <Datetime operation="today">12:57:00+09:00</Datetime>
16
+ def set_date(date)
17
+ time = @datetime_list[0].text.split(/[:\+]/).first(3).map(&:to_i)
18
+ @datetime = DateTime.new(date.year, date.month, date.day, *time) rescue DateTime.now
19
+ @datetime += 1 if @datetime_list[0].operation == 'yesterday'
20
+ end
21
+
22
+ class Datetime < EkispertBase; end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Ekispert
2
+ class Course < EkispertBase
3
+ class Route < EkispertBase
4
+ class Line < EkispertBase
5
+ class Stop < EkispertBase
6
+ class Point < EkispertBase
7
+ attr_accessor :station_list, :prefecture_list
8
+
9
+ def initialize(element)
10
+ @station_list = []
11
+ @prefecture_list = []
12
+ super(element)
13
+ station.prefecture_list = prefecture_list
14
+ end
15
+
16
+ def station
17
+ @station_list[0]
18
+ end
19
+
20
+ def prefecture
21
+ @prefecture_list[0]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end