admiral_stats_parser 1.13.0 → 1.14.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/README.md +5 -3
- data/lib/admiral_stats_parser.rb +15 -10
- data/lib/admiral_stats_parser/parser/character_list_info_parser.rb +47 -0
- data/lib/admiral_stats_parser/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8b909d1d3cec6dc0f41925980ca45af971cf346
|
4
|
+
data.tar.gz: a008b2b774371dde2b60a5951520c5c3a873d3d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b06be04b39eb529ad4d6d2fa3498ffc666bd9d118f545b095ad7853f371d2e962b839ca839f7907dc81e6057d938e037adbc259dcf78591f00422e0b05b66070
|
7
|
+
data.tar.gz: 0e4854f2c53a4aee6c9a448a9aa309cb2c1ce9690e39761ff600a66fbccdcd12a54e4262e0eb4f5963d11c85076728ab1f7fa46e77808344e9a164287589f636
|
data/README.md
CHANGED
@@ -68,7 +68,8 @@ AdmiralStatsParser は、以下の API version をサポートしています。
|
|
68
68
|
| 10 | 2017-09-21 〜 2018-01-31 |
|
69
69
|
| 11 | 2018-02-01 (VERSION A REVISION 3 のリリース日) 〜 2018-02-15 |
|
70
70
|
| 12 | 2018-02-16 (ケッコンカッコカリの実装日) 〜 2018-04-18 |
|
71
|
-
| 13 | 2018-04-19 (第4回イベントの EO 開始日) 〜 |
|
71
|
+
| 13 | 2018-04-19 (第4回イベントの EO 開始日) 〜 2018-05-13 |
|
72
|
+
| 14 | 2018-05-14 (大型艦建造の実装日) 〜 |
|
72
73
|
|
73
74
|
各 API version でパースできる JSON の種類は以下の通りです。また、同じ情報でも、API version によって、含まれる情報量が異なる場合があります。その場合は Supported (1), Supported (2) のように記載して区別しています。
|
74
75
|
|
@@ -78,7 +79,7 @@ AdmiralStatsParser は、以下の API version をサポートしています。
|
|
78
79
|
| 2 〜 6 | Supported (2) | Supported (2) | Supported (2) | Supported |
|
79
80
|
| 7 〜 10 | Supported (3) | Supported (3) | Supported (2) | Supported |
|
80
81
|
| 11 | Supported (3) | Supported (4) | Supported (2) | Supported |
|
81
|
-
| 12 〜
|
82
|
+
| 12 〜 14 | Supported (3) | Supported (4) | Supported (3) | Supported |
|
82
83
|
|
83
84
|
| API version | 艦娘一覧 | 装備一覧 | イベント海域情報 |
|
84
85
|
|------------:|:-----|:-----|:-----|
|
@@ -91,12 +92,13 @@ AdmiralStatsParser は、以下の API version をサポートしています。
|
|
91
92
|
| 9 〜 11 | Supported (4) | Supported (2) | Supported (2) |
|
92
93
|
| 12 | Supported (5) | Supported (2) | Supported (2) |
|
93
94
|
| 13 | Supported (5) | Supported (2) | Supported (3) |
|
95
|
+
| 14 | Supported (6) | Supported (2) | Supported (3) |
|
94
96
|
|
95
97
|
| API version | 改装設計図一覧 |
|
96
98
|
|------------:|:-----|
|
97
99
|
| 1 〜 6 | Unsupported |
|
98
100
|
| 7 | Supported (1) |
|
99
|
-
| 8 〜
|
101
|
+
| 8 〜 14 | Supported (2) |
|
100
102
|
|
101
103
|
## Development
|
102
104
|
|
data/lib/admiral_stats_parser.rb
CHANGED
@@ -12,7 +12,7 @@ require 'admiral_stats_parser/parser/blueprint_list_info_parser'
|
|
12
12
|
module AdmiralStatsParser
|
13
13
|
# 最新の API バージョンを返します。
|
14
14
|
def self.get_latest_api_version
|
15
|
-
return
|
15
|
+
return 14
|
16
16
|
end
|
17
17
|
|
18
18
|
# エクスポート時刻を元に、API バージョンを推測して返します。
|
@@ -53,6 +53,9 @@ module AdmiralStatsParser
|
|
53
53
|
# version 13 の開始日
|
54
54
|
return 12 if exported_at < Time.parse('2018-04-19T07:00:00+0900')
|
55
55
|
|
56
|
+
# version 14 の開始日
|
57
|
+
return 13 if exported_at < Time.parse('2018-05-14T07:00:00+0900')
|
58
|
+
|
56
59
|
return self.get_latest_api_version
|
57
60
|
end
|
58
61
|
|
@@ -63,7 +66,7 @@ module AdmiralStatsParser
|
|
63
66
|
PersonalBasicInfoParser.parse(json, 1)
|
64
67
|
when 2..6
|
65
68
|
PersonalBasicInfoParser.parse(json, 2)
|
66
|
-
when 7..
|
69
|
+
when 7..14
|
67
70
|
PersonalBasicInfoParser.parse(json, 3)
|
68
71
|
else
|
69
72
|
raise 'unsupported API version'
|
@@ -79,7 +82,7 @@ module AdmiralStatsParser
|
|
79
82
|
AreaCaptureInfoParser.parse(json, 2)
|
80
83
|
when 7..10
|
81
84
|
AreaCaptureInfoParser.parse(json, 3)
|
82
|
-
when 11..
|
85
|
+
when 11..14
|
83
86
|
AreaCaptureInfoParser.parse(json, 4)
|
84
87
|
else
|
85
88
|
raise 'unsupported API version'
|
@@ -93,7 +96,7 @@ module AdmiralStatsParser
|
|
93
96
|
TcBookInfoParser.parse(json, 1)
|
94
97
|
when 2..11
|
95
98
|
TcBookInfoParser.parse(json, 2)
|
96
|
-
when 12..
|
99
|
+
when 12..14
|
97
100
|
TcBookInfoParser.parse(json, 3)
|
98
101
|
else
|
99
102
|
raise 'unsupported API version'
|
@@ -103,7 +106,7 @@ module AdmiralStatsParser
|
|
103
106
|
# 装備図鑑をパースします。
|
104
107
|
def self.parse_equip_book_info(json, api_version)
|
105
108
|
case api_version
|
106
|
-
when 1..
|
109
|
+
when 1..14
|
107
110
|
EquipBookInfoParser.parse(json)
|
108
111
|
else
|
109
112
|
raise 'unsupported API version'
|
@@ -125,6 +128,8 @@ module AdmiralStatsParser
|
|
125
128
|
CharacterListInfoParser.parse(json, 4)
|
126
129
|
when 12..13
|
127
130
|
CharacterListInfoParser.parse(json, 5)
|
131
|
+
when 14
|
132
|
+
CharacterListInfoParser.parse(json, 6)
|
128
133
|
else
|
129
134
|
raise 'unsupported API version'
|
130
135
|
end
|
@@ -137,7 +142,7 @@ module AdmiralStatsParser
|
|
137
142
|
raise 'API version 1 does not support equip list info'
|
138
143
|
when 2..8
|
139
144
|
EquipListInfoParser.parse(json, 1)
|
140
|
-
when 9..
|
145
|
+
when 9..14
|
141
146
|
EquipListInfoParser.parse(json, 2)
|
142
147
|
else
|
143
148
|
raise 'unsupported API version'
|
@@ -149,7 +154,7 @@ module AdmiralStatsParser
|
|
149
154
|
case api_version
|
150
155
|
when 1..8
|
151
156
|
EquipListInfoParser.parse_max_slot_num(json, 1)
|
152
|
-
when 9..
|
157
|
+
when 9..14
|
153
158
|
EquipListInfoParser.parse_max_slot_num(json, 2)
|
154
159
|
else
|
155
160
|
raise 'unsupported API version'
|
@@ -165,7 +170,7 @@ module AdmiralStatsParser
|
|
165
170
|
EventInfoParser.parse(json, 1)
|
166
171
|
when 7..12
|
167
172
|
EventInfoParser.parse(json, 2)
|
168
|
-
when 13
|
173
|
+
when 13..14
|
169
174
|
EventInfoParser.parse(json, 3)
|
170
175
|
else
|
171
176
|
raise 'unsupported API version'
|
@@ -177,7 +182,7 @@ module AdmiralStatsParser
|
|
177
182
|
case api_version
|
178
183
|
when 1..3
|
179
184
|
raise "API version #{api_version} does not support event info"
|
180
|
-
when 4..
|
185
|
+
when 4..14
|
181
186
|
{
|
182
187
|
opened: EventInfoParser.opened?(event_info_list, level, period),
|
183
188
|
all_cleared: EventInfoParser.all_cleared?(event_info_list, level, period),
|
@@ -198,7 +203,7 @@ module AdmiralStatsParser
|
|
198
203
|
raise "API version #{api_version} does not support blueprint list info"
|
199
204
|
when 7
|
200
205
|
BlueprintListInfoParser.parse(json, 1)
|
201
|
-
when 8..
|
206
|
+
when 8..14
|
202
207
|
BlueprintListInfoParser.parse(json, 2)
|
203
208
|
else
|
204
209
|
raise 'unsupported API version'
|
@@ -91,6 +91,40 @@ class CharacterListInfoParser
|
|
91
91
|
blueprint_total_num: Integer,
|
92
92
|
married: :boolean,
|
93
93
|
},
|
94
|
+
6 => {
|
95
|
+
book_no: Integer,
|
96
|
+
lv: Integer,
|
97
|
+
ship_type: String,
|
98
|
+
ship_sort_no: Integer,
|
99
|
+
remodel_lv: Integer,
|
100
|
+
ship_name: String,
|
101
|
+
status_img: String,
|
102
|
+
star_num: Integer,
|
103
|
+
ship_class: String,
|
104
|
+
tc_img: String,
|
105
|
+
exp_percent: Integer,
|
106
|
+
max_hp: Integer,
|
107
|
+
real_hp: Integer,
|
108
|
+
damage_status: String,
|
109
|
+
slot_num: Integer,
|
110
|
+
slot_equip_name: Array,
|
111
|
+
slot_amount: Array,
|
112
|
+
slot_disp: Array,
|
113
|
+
slot_img: Array,
|
114
|
+
blueprint_total_num: Integer,
|
115
|
+
married: :boolean,
|
116
|
+
},
|
117
|
+
}
|
118
|
+
|
119
|
+
OPTIONAL_KEYS = {
|
120
|
+
1 => {},
|
121
|
+
2 => {},
|
122
|
+
3 => {},
|
123
|
+
4 => {},
|
124
|
+
5 => {},
|
125
|
+
6 => {
|
126
|
+
ship_class_index: Integer,
|
127
|
+
},
|
94
128
|
}
|
95
129
|
|
96
130
|
def self.parse(json, api_version)
|
@@ -125,6 +159,19 @@ class CharacterListInfoParser
|
|
125
159
|
result.instance_variable_set("@#{key.to_s}", items[camel_case_key])
|
126
160
|
end
|
127
161
|
|
162
|
+
OPTIONAL_KEYS[api_version].each do |key, key_class|
|
163
|
+
# キーが含まれなければ、処理をスキップ
|
164
|
+
camel_case_key = key.to_s.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
|
165
|
+
next unless items.include?(camel_case_key)
|
166
|
+
|
167
|
+
# 結果のクラスが合わなければエラー
|
168
|
+
unless items[camel_case_key].is_a?(key_class)
|
169
|
+
raise "Optional key #{key} is not class #{key_class}"
|
170
|
+
end
|
171
|
+
|
172
|
+
result.instance_variable_set("@#{key.to_s}", items[camel_case_key])
|
173
|
+
end
|
174
|
+
|
128
175
|
results << result
|
129
176
|
end
|
130
177
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: admiral_stats_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Yoshizawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|