tf2_line_parser 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +13 -11
- data/README.md +0 -5
- data/lib/tf2_line_parser/events/airshot.rb +4 -7
- data/lib/tf2_line_parser/events/assist.rb +1 -4
- data/lib/tf2_line_parser/events/capture_block.rb +2 -5
- data/lib/tf2_line_parser/events/charge_deployed.rb +2 -4
- data/lib/tf2_line_parser/events/chat.rb +2 -10
- data/lib/tf2_line_parser/events/connect.rb +2 -6
- data/lib/tf2_line_parser/events/console_say.rb +2 -5
- data/lib/tf2_line_parser/events/current_score.rb +1 -4
- data/lib/tf2_line_parser/events/damage.rb +4 -7
- data/lib/tf2_line_parser/events/disconnect.rb +21 -0
- data/lib/tf2_line_parser/events/domination.rb +1 -3
- data/lib/tf2_line_parser/events/event.rb +12 -18
- data/lib/tf2_line_parser/events/final_score.rb +1 -4
- data/lib/tf2_line_parser/events/headshot_damage.rb +5 -9
- data/lib/tf2_line_parser/events/heal.rb +3 -4
- data/lib/tf2_line_parser/events/kill.rb +4 -6
- data/lib/tf2_line_parser/events/match_end.rb +2 -5
- data/lib/tf2_line_parser/events/medic_death.rb +5 -6
- data/lib/tf2_line_parser/events/pickup_item.rb +3 -5
- data/lib/tf2_line_parser/events/player_action_event.rb +2 -5
- data/lib/tf2_line_parser/events/point_capture.rb +2 -5
- data/lib/tf2_line_parser/events/pvp_event.rb +3 -3
- data/lib/tf2_line_parser/events/revenge.rb +1 -3
- data/lib/tf2_line_parser/events/role_change.rb +3 -5
- data/lib/tf2_line_parser/events/round_event_with_variables.rb +1 -4
- data/lib/tf2_line_parser/events/round_event_without_variables.rb +1 -4
- data/lib/tf2_line_parser/events/round_length.rb +3 -6
- data/lib/tf2_line_parser/events/round_stalemate.rb +2 -5
- data/lib/tf2_line_parser/events/round_start.rb +2 -5
- data/lib/tf2_line_parser/events/round_win.rb +2 -5
- data/lib/tf2_line_parser/events/score.rb +4 -7
- data/lib/tf2_line_parser/events/spawn.rb +2 -4
- data/lib/tf2_line_parser/events/suicide.rb +3 -5
- data/lib/tf2_line_parser/events/unknown.rb +3 -6
- data/lib/tf2_line_parser/line.rb +1 -4
- data/lib/tf2_line_parser/parser.rb +1 -2
- data/lib/tf2_line_parser/player.rb +1 -4
- data/lib/tf2_line_parser/version.rb +2 -1
- data/lib/tf2_line_parser.rb +14 -15
- data/spec/fixtures/logs/broder_vs_epsilon.log +1 -0
- data/spec/lib/tf2_line_parser/parser_spec.rb +167 -148
- data/spec/lib/tf2_line_parser/player_spec.rb +5 -7
- data/spec/spec_helper.rb +3 -1
- data/tf2_line_parser.gemspec +11 -10
- metadata +3 -2
@@ -1,106 +1,107 @@
|
|
1
|
-
#
|
2
|
-
require 'spec_helper'
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
3
|
+
require 'spec_helper'
|
4
4
|
|
5
5
|
module TF2LineParser
|
6
|
-
|
7
6
|
describe Parser do
|
8
|
-
|
9
|
-
let(:log_file) { File.expand_path('../../../fixtures/logs/broder_vs_epsilon.log', __FILE__) }
|
7
|
+
let(:log_file) { File.expand_path('../../fixtures/logs/broder_vs_epsilon.log', __dir__) }
|
10
8
|
let(:log) { File.read(log_file) }
|
11
9
|
let(:log_lines) { log.lines.map(&:to_s) }
|
12
|
-
let(:detailed_log_file) { File.expand_path('
|
10
|
+
let(:detailed_log_file) { File.expand_path('../../fixtures/logs/detailed_damage.log', __dir__) }
|
13
11
|
let(:detailed_log) { File.read(detailed_log_file) }
|
14
12
|
let(:detailed_log_lines) { detailed_log.lines.map(&:to_s) }
|
15
|
-
let(:airshot_log_file) { File.expand_path('
|
13
|
+
let(:airshot_log_file) { File.expand_path('../../fixtures/logs/airshot.log', __dir__) }
|
16
14
|
let(:airshot_log) { File.read(airshot_log_file) }
|
17
15
|
let(:airshot_log_lines) { airshot_log.lines.map(&:to_s) }
|
18
|
-
let(:new_log_file) { File.expand_path('
|
16
|
+
let(:new_log_file) { File.expand_path('../../fixtures/logs/new_log.log', __dir__) }
|
19
17
|
let(:new_log) { File.read(new_log_file) }
|
20
18
|
let(:new_log_lines) { new_log.lines.map(&:to_s) }
|
21
|
-
let(:csgo_log_file) { File.expand_path('
|
19
|
+
let(:csgo_log_file) { File.expand_path('../../fixtures/logs/csgo.log', __dir__) }
|
22
20
|
let(:csgo_log) { File.read(csgo_log_file) }
|
23
21
|
let(:csgo_log_lines) { csgo_log.lines.map(&:to_s) }
|
24
22
|
|
25
23
|
describe '#new' do
|
26
|
-
|
27
24
|
it 'takes the log line and gets the date from it' do
|
28
25
|
expect(Parser.new(log_lines.first).parse.time).to eql Time.local(2013, 2, 7, 21, 21, 8)
|
29
26
|
end
|
30
|
-
|
31
27
|
end
|
32
28
|
|
33
29
|
describe '#parse' do
|
34
|
-
|
35
30
|
def parse(line)
|
36
31
|
Parser.new(line).parse
|
37
32
|
end
|
38
33
|
|
39
34
|
it 'recognizes damage' do
|
40
35
|
line = log_lines[1001]
|
41
|
-
player_name =
|
42
|
-
player_steam_id =
|
36
|
+
player_name = 'Epsilon numlocked'
|
37
|
+
player_steam_id = 'STEAM_0:1:16347045'
|
43
38
|
player_team = 'Red'
|
44
39
|
value = '69'
|
45
40
|
weapon = nil
|
46
|
-
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, nil, nil,
|
41
|
+
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, nil, nil,
|
42
|
+
nil, value, weapon)
|
47
43
|
parse(line)
|
48
44
|
end
|
49
45
|
|
50
46
|
it 'recognizes new steam id log lines with detailed damage' do
|
51
47
|
line = new_log_lines[0]
|
52
|
-
player_name =
|
53
|
-
player_steam_id =
|
48
|
+
player_name = 'iM yUKi intel @i52'
|
49
|
+
player_steam_id = '[U:1:3825470]'
|
54
50
|
player_team = 'Blue'
|
55
|
-
target_team =
|
56
|
-
target_name =
|
57
|
-
target_steam_id =
|
51
|
+
target_team = 'Red'
|
52
|
+
target_name = 'mix^ enigma @ i52'
|
53
|
+
target_steam_id = '[U:1:33652944]'
|
58
54
|
value = '78'
|
59
|
-
weapon =
|
60
|
-
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
55
|
+
weapon = 'tf_projectile_rocket'
|
56
|
+
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
57
|
+
target_steam_id, target_team, value, weapon)
|
61
58
|
parse(line)
|
62
59
|
end
|
63
60
|
|
64
61
|
it 'recognizes detailed damage' do
|
65
62
|
line = detailed_log_lines[61]
|
66
|
-
player_name =
|
67
|
-
player_steam_id =
|
68
|
-
player_team =
|
69
|
-
target_name =
|
70
|
-
target_steam_id =
|
71
|
-
target_team =
|
72
|
-
value =
|
73
|
-
weapon =
|
74
|
-
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
63
|
+
player_name = 'LittleLies'
|
64
|
+
player_steam_id = 'STEAM_0:0:55031498'
|
65
|
+
player_team = 'Blue'
|
66
|
+
target_name = 'Aquila'
|
67
|
+
target_steam_id = 'STEAM_0:0:43087158'
|
68
|
+
target_team = 'Red'
|
69
|
+
value = '102'
|
70
|
+
weapon = 'tf_projectile_pipe'
|
71
|
+
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
72
|
+
target_steam_id, target_team, value, weapon)
|
75
73
|
parse(line)
|
76
74
|
end
|
77
75
|
|
78
76
|
it 'recognizes airshots' do
|
79
77
|
line = airshot_log_lines[0]
|
80
|
-
weapon =
|
81
|
-
airshot =
|
82
|
-
expect(Events::Airshot).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
78
|
+
weapon = 'tf_projectile_rocket'
|
79
|
+
airshot = '1'
|
80
|
+
expect(Events::Airshot).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
81
|
+
anything, anything, weapon, airshot)
|
83
82
|
parse(line).inspect
|
84
83
|
end
|
85
84
|
|
86
85
|
it 'recognizes sniper headshot damage' do
|
87
86
|
line = detailed_log_lines[3645]
|
88
|
-
weapon =
|
89
|
-
expect(Events::HeadshotDamage).to receive(:new).with(anything, anything, anything, anything, anything,
|
87
|
+
weapon = 'sniperrifle'
|
88
|
+
expect(Events::HeadshotDamage).to receive(:new).with(anything, anything, anything, anything, anything,
|
89
|
+
anything, anything, anything, weapon)
|
90
90
|
parse(line).inspect
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'ignores realdamage' do
|
94
94
|
line = detailed_log_lines[65]
|
95
|
-
player_name =
|
96
|
-
player_steam_id =
|
97
|
-
player_team =
|
98
|
-
target_name =
|
99
|
-
target_steam_id =
|
100
|
-
target_team =
|
101
|
-
value =
|
102
|
-
weapon =
|
103
|
-
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
95
|
+
player_name = 'LittleLies'
|
96
|
+
player_steam_id = 'STEAM_0:0:55031498'
|
97
|
+
player_team = 'Blue'
|
98
|
+
target_name = 'Aquila'
|
99
|
+
target_steam_id = 'STEAM_0:0:43087158'
|
100
|
+
target_team = 'Red'
|
101
|
+
value = '98'
|
102
|
+
weapon = 'tf_projectile_pipe'
|
103
|
+
expect(Events::Damage).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
104
|
+
target_steam_id, target_team, value, weapon)
|
104
105
|
parse(line)
|
105
106
|
end
|
106
107
|
|
@@ -121,7 +122,7 @@ module TF2LineParser
|
|
121
122
|
|
122
123
|
it 'recognizes a round win' do
|
123
124
|
line = log_lines[1439]
|
124
|
-
winner =
|
125
|
+
winner = 'Blue'
|
125
126
|
expect(Events::RoundWin).to receive(:new).with(anything, winner)
|
126
127
|
parse(line)
|
127
128
|
end
|
@@ -134,72 +135,86 @@ module TF2LineParser
|
|
134
135
|
|
135
136
|
it 'recognizes a match end' do
|
136
137
|
line = log_lines[4169]
|
137
|
-
reason =
|
138
|
+
reason = 'Reached Win Difference Limit'
|
138
139
|
expect(Events::MatchEnd).to receive(:new).with(anything, reason)
|
139
140
|
parse(line)
|
140
141
|
end
|
141
142
|
|
142
143
|
it 'recognizes a heal' do
|
143
144
|
line = log_lines[1433]
|
144
|
-
player_name =
|
145
|
-
player_steam_id =
|
146
|
-
player_team =
|
147
|
-
target_name =
|
148
|
-
target_steam_id =
|
149
|
-
target_team =
|
145
|
+
player_name = 'Epsilon KnOxXx'
|
146
|
+
player_steam_id = 'STEAM_0:1:12124893'
|
147
|
+
player_team = 'Red'
|
148
|
+
target_name = 'Epsilon numlocked'
|
149
|
+
target_steam_id = 'STEAM_0:1:16347045'
|
150
|
+
target_team = 'Red'
|
150
151
|
value = '1'
|
151
|
-
expect(Events::Heal).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
152
|
+
expect(Events::Heal).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
153
|
+
target_steam_id, target_team, value)
|
152
154
|
parse(line)
|
153
155
|
end
|
154
156
|
|
155
157
|
it 'recognizes a kill' do
|
156
158
|
line = log_lines[1761]
|
157
|
-
player_name =
|
158
|
-
player_steam_id =
|
159
|
-
player_team =
|
160
|
-
target_name =
|
161
|
-
target_steam_id =
|
162
|
-
target_team =
|
163
|
-
weapon =
|
159
|
+
player_name = 'Epsilon basH.'
|
160
|
+
player_steam_id = 'STEAM_0:1:15829615'
|
161
|
+
player_team = 'Red'
|
162
|
+
target_name = 'broder jukebox'
|
163
|
+
target_steam_id = 'STEAM_0:1:13978585'
|
164
|
+
target_team = 'Blue'
|
165
|
+
weapon = 'pistol_scout'
|
164
166
|
customkill = nil
|
165
|
-
expect(Events::Kill).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
167
|
+
expect(Events::Kill).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
168
|
+
target_steam_id, target_team, weapon, customkill)
|
166
169
|
parse(line)
|
167
170
|
end
|
168
171
|
|
169
172
|
it 'recognizes headshot kills' do
|
170
173
|
line = log_lines[1951]
|
171
|
-
weapon =
|
172
|
-
customkill =
|
173
|
-
expect(Events::Kill).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
174
|
+
weapon = 'sniperrifle'
|
175
|
+
customkill = 'headshot'
|
176
|
+
expect(Events::Kill).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
177
|
+
anything, weapon, customkill)
|
174
178
|
parse(line)
|
175
179
|
end
|
176
180
|
|
177
181
|
it 'recognizes an assist' do
|
178
182
|
line = log_lines[1451]
|
179
|
-
player_name =
|
180
|
-
player_steam_id =
|
181
|
-
player_team =
|
182
|
-
target_name =
|
183
|
-
target_steam_id =
|
184
|
-
target_team =
|
185
|
-
expect(Events::Assist).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
183
|
+
player_name = 'broder jukebox'
|
184
|
+
player_steam_id = 'STEAM_0:1:13978585'
|
185
|
+
player_team = 'Blue'
|
186
|
+
target_name = 'Epsilon Mitsy'
|
187
|
+
target_steam_id = 'STEAM_0:0:16858056'
|
188
|
+
target_team = 'Red'
|
189
|
+
expect(Events::Assist).to receive(:new).with(anything, player_name, player_steam_id, player_team, target_name,
|
190
|
+
target_steam_id, target_team)
|
186
191
|
parse(line)
|
187
192
|
end
|
188
193
|
|
189
194
|
it 'recognizes connect' do
|
190
195
|
line = log_lines[9]
|
191
|
-
name =
|
192
|
-
steam_id =
|
196
|
+
name = 'Epsilon numlocked'
|
197
|
+
steam_id = 'STEAM_0:1:16347045'
|
193
198
|
team = ''
|
194
|
-
message =
|
199
|
+
message = '0.0.0.0:27005'
|
195
200
|
expect(Events::Connect).to receive(:new).with(anything, name, steam_id, team, message)
|
196
201
|
parse(line)
|
197
202
|
end
|
198
203
|
|
204
|
+
it 'recognizes disconnect' do
|
205
|
+
line = log_lines[4542]
|
206
|
+
name = 'cc//TviQ'
|
207
|
+
steam_id = 'STEAM_0:0:8520477'
|
208
|
+
team = 'Blue'
|
209
|
+
message = 'Disconnect by user.'
|
210
|
+
expect(Events::Disconnect).to receive(:new).with(anything, name, steam_id, team, message)
|
211
|
+
parse(line)
|
212
|
+
end
|
213
|
+
|
199
214
|
it 'recognizes chat' do
|
200
215
|
line = log_lines[89]
|
201
|
-
name =
|
202
|
-
steam_id =
|
216
|
+
name = 'Epsilon KnOxXx'
|
217
|
+
steam_id = 'STEAM_0:1:12124893'
|
203
218
|
team = 'Red'
|
204
219
|
message = "it's right for the ping"
|
205
220
|
expect(Events::Say).to receive(:new).with(anything, name, steam_id, team, message)
|
@@ -208,50 +223,52 @@ module TF2LineParser
|
|
208
223
|
|
209
224
|
it 'recognizes team chat' do
|
210
225
|
line = log_lines[303]
|
211
|
-
name =
|
212
|
-
steam_id =
|
226
|
+
name = 'broder mirelin'
|
227
|
+
steam_id = 'STEAM_0:1:18504112'
|
213
228
|
team = 'Blue'
|
214
|
-
message =
|
229
|
+
message = '>>> USING UBER <<<[info] '
|
215
230
|
expect(Events::TeamSay).to receive(:new).with(anything, name, steam_id, team, message)
|
216
231
|
parse(line)
|
217
232
|
end
|
218
233
|
|
219
234
|
it 'recognizes dominations' do
|
220
235
|
line = log_lines[1948]
|
221
|
-
name =
|
222
|
-
steam_id =
|
223
|
-
team =
|
224
|
-
target_name =
|
225
|
-
target_steam_id =
|
226
|
-
target_team =
|
227
|
-
expect(Events::Domination).to receive(:new).with(anything, name, steam_id, team, target_name, target_steam_id,
|
236
|
+
name = 'Epsilon basH.'
|
237
|
+
steam_id = 'STEAM_0:1:15829615'
|
238
|
+
team = 'Red'
|
239
|
+
target_name = 'broder jukebox'
|
240
|
+
target_steam_id = 'STEAM_0:1:13978585'
|
241
|
+
target_team = 'Blue'
|
242
|
+
expect(Events::Domination).to receive(:new).with(anything, name, steam_id, team, target_name, target_steam_id,
|
243
|
+
target_team)
|
228
244
|
parse(line)
|
229
245
|
end
|
230
246
|
|
231
247
|
it 'recognizes revenges' do
|
232
248
|
line = log_lines[2354]
|
233
|
-
name =
|
234
|
-
steam_id =
|
235
|
-
team =
|
236
|
-
target_name =
|
237
|
-
target_steam_id =
|
238
|
-
target_team =
|
239
|
-
expect(Events::Revenge).to receive(:new).with(anything, name, steam_id, team, target_name, target_steam_id,
|
249
|
+
name = 'broder jukebox'
|
250
|
+
steam_id = 'STEAM_0:1:13978585'
|
251
|
+
team = 'Blue'
|
252
|
+
target_name = 'Epsilon basH.'
|
253
|
+
target_steam_id = 'STEAM_0:1:15829615'
|
254
|
+
target_team = 'Red'
|
255
|
+
expect(Events::Revenge).to receive(:new).with(anything, name, steam_id, team, target_name, target_steam_id,
|
256
|
+
target_team)
|
240
257
|
parse(line)
|
241
258
|
end
|
242
259
|
|
243
260
|
it 'recognizes current score' do
|
244
261
|
line = log_lines[1442]
|
245
|
-
team =
|
246
|
-
score =
|
262
|
+
team = 'Blue'
|
263
|
+
score = '1'
|
247
264
|
expect(Events::CurrentScore).to receive(:new).with(anything, team, score)
|
248
265
|
parse(line)
|
249
266
|
end
|
250
267
|
|
251
268
|
it 'recognizes final score' do
|
252
269
|
line = log_lines[4170]
|
253
|
-
team =
|
254
|
-
score =
|
270
|
+
team = 'Red'
|
271
|
+
score = '6'
|
255
272
|
expect(Events::FinalScore).to receive(:new).with(anything, team, score)
|
256
273
|
parse(line)
|
257
274
|
end
|
@@ -259,8 +276,8 @@ module TF2LineParser
|
|
259
276
|
it 'recognizes item pickup' do
|
260
277
|
line = log_lines[51]
|
261
278
|
name = 'Epsilon Mike'
|
262
|
-
steam_id =
|
263
|
-
team =
|
279
|
+
steam_id = 'STEAM_0:1:1895232'
|
280
|
+
team = 'Blue'
|
264
281
|
item = 'medkit_medium'
|
265
282
|
expect(Events::PickupItem).to receive(:new).with(anything, name, steam_id, team, item)
|
266
283
|
parse(line)
|
@@ -274,50 +291,53 @@ module TF2LineParser
|
|
274
291
|
|
275
292
|
it 'recognizes ubercharges' do
|
276
293
|
line = log_lines[1416]
|
277
|
-
name =
|
278
|
-
steam_id =
|
279
|
-
team =
|
294
|
+
name = 'broder mirelin'
|
295
|
+
steam_id = 'STEAM_0:1:18504112'
|
296
|
+
team = 'Blue'
|
280
297
|
expect(Events::ChargeDeployed).to receive(:new).with(anything, name, steam_id, team)
|
281
298
|
parse(line)
|
282
299
|
|
283
300
|
line = detailed_log_lines[782]
|
284
|
-
name =
|
285
|
-
steam_id =
|
286
|
-
team =
|
301
|
+
name = 'flo ❤'
|
302
|
+
steam_id = 'STEAM_0:1:53945481'
|
303
|
+
team = 'Blue'
|
287
304
|
expect(Events::ChargeDeployed).to receive(:new).with(anything, name, steam_id, team)
|
288
305
|
parse(line)
|
289
306
|
end
|
290
307
|
|
291
308
|
it 'recognizes medic deaths' do
|
292
309
|
line = log_lines[1700]
|
293
|
-
medic_name =
|
294
|
-
medic_steam_id =
|
295
|
-
medic_team =
|
296
|
-
killer_name =
|
297
|
-
killer_steam_id =
|
298
|
-
killer_team =
|
299
|
-
healing =
|
300
|
-
expect(Events::MedicDeath).to receive(:new).with(anything, killer_name, killer_steam_id, killer_team,
|
310
|
+
medic_name = 'broder mirelin'
|
311
|
+
medic_steam_id = 'STEAM_0:1:18504112'
|
312
|
+
medic_team = 'Blue'
|
313
|
+
killer_name = 'Epsilon numlocked'
|
314
|
+
killer_steam_id = 'STEAM_0:1:16347045'
|
315
|
+
killer_team = 'Red'
|
316
|
+
healing = '1975'
|
317
|
+
expect(Events::MedicDeath).to receive(:new).with(anything, killer_name, killer_steam_id, killer_team,
|
318
|
+
medic_name, medic_steam_id, medic_team, healing, '0')
|
301
319
|
parse(line)
|
302
320
|
end
|
303
321
|
|
304
322
|
it 'recognizes medic uberdrops' do
|
305
323
|
uberdrop = 'L 10/04/2012 - 21:43:06: "TLR Traxantic<28><STEAM_0:1:1328042><Red>" triggered "medic_death" against "cc//Admirable<3><STEAM_0:0:154182><Blue>" (healing "6478") (ubercharge "1")'
|
306
|
-
expect(Events::MedicDeath).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
324
|
+
expect(Events::MedicDeath).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
325
|
+
anything, anything, '1')
|
307
326
|
parse(uberdrop)
|
308
327
|
end
|
309
328
|
|
310
329
|
it 'recognizes medic healing on death' do
|
311
330
|
line = 'L 10/04/2012 - 21:43:06: "TLR Traxantic<28><STEAM_0:1:1328042><Red>" triggered "medic_death" against "cc//Admirable<3><STEAM_0:0:154182><Blue>" (healing "6478") (ubercharge "1")'
|
312
|
-
expect(Events::MedicDeath).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
331
|
+
expect(Events::MedicDeath).to receive(:new).with(anything, anything, anything, anything, anything, anything,
|
332
|
+
anything, '6478', anything)
|
313
333
|
parse(line)
|
314
334
|
end
|
315
335
|
|
316
336
|
it 'recognizes role changes' do
|
317
337
|
line = log_lines[1712]
|
318
|
-
player_name =
|
319
|
-
player_steam_id =
|
320
|
-
player_team =
|
338
|
+
player_name = 'broder bybben'
|
339
|
+
player_steam_id = 'STEAM_0:1:159631'
|
340
|
+
player_team = 'Blue'
|
321
341
|
role = 'scout'
|
322
342
|
expect(Events::RoleChange).to receive(:new).with(anything, player_name, player_steam_id, player_team, role)
|
323
343
|
parse(line)
|
@@ -325,87 +345,86 @@ module TF2LineParser
|
|
325
345
|
|
326
346
|
it 'recognizes round length' do
|
327
347
|
line = log_lines[2275]
|
328
|
-
length =
|
348
|
+
length = '237.35'
|
329
349
|
expect(Events::RoundLength).to receive(:new).with(anything, length)
|
330
350
|
parse(line)
|
331
351
|
end
|
332
352
|
|
333
353
|
it 'recognizes capture block' do
|
334
354
|
line = log_lines[3070]
|
335
|
-
name =
|
336
|
-
steam_id =
|
337
|
-
team =
|
338
|
-
cap_number =
|
339
|
-
cap_name =
|
355
|
+
name = 'Epsilon basH.'
|
356
|
+
steam_id = 'STEAM_0:1:15829615'
|
357
|
+
team = 'Red'
|
358
|
+
cap_number = '2'
|
359
|
+
cap_name = '#Badlands_cap_cp3'
|
340
360
|
expect(Events::CaptureBlock).to receive(:new).with(anything, name, steam_id, team, cap_number, cap_name)
|
341
361
|
parse(line)
|
342
362
|
end
|
343
363
|
|
344
364
|
it 'recognizes suicides' do
|
345
365
|
line = log_lines[76]
|
346
|
-
name =
|
347
|
-
steam_id =
|
348
|
-
team =
|
349
|
-
suicide_method =
|
366
|
+
name = '.schocky'
|
367
|
+
steam_id = 'STEAM_0:0:2829363'
|
368
|
+
team = 'Red'
|
369
|
+
suicide_method = 'world'
|
350
370
|
expect(Events::Suicide).to receive(:new).with(anything, name, steam_id, team, suicide_method)
|
351
371
|
parse(line)
|
352
372
|
end
|
353
373
|
|
354
374
|
it 'recognizes spawns' do
|
355
375
|
line = log_lines[4541]
|
356
|
-
name =
|
357
|
-
steam_id =
|
358
|
-
team =
|
359
|
-
klass =
|
376
|
+
name = 'candyyou # Infinity Gaming'
|
377
|
+
steam_id = 'STEAM_0:0:50979748'
|
378
|
+
team = 'Red'
|
379
|
+
klass = 'Soldier'
|
360
380
|
expect(Events::Spawn).to receive(:new).with(anything, name, steam_id, team, klass)
|
361
381
|
parse(line)
|
362
382
|
end
|
363
383
|
|
364
384
|
it 'deals with unknown lines' do
|
365
385
|
line = log_lines[0]
|
366
|
-
time =
|
386
|
+
time = '02/07/2013 - 21:21:08'
|
367
387
|
unknown = 'Log file started (file "logs/L0207006.log") (game "/home/hz00112/tf2/orangebox/tf") (version "5198")'
|
368
388
|
expect(Events::Unknown).to receive(:new).with(time, unknown)
|
369
389
|
parse(line)
|
370
390
|
end
|
371
391
|
|
372
|
-
|
373
392
|
it 'can parse all lines in the example log files without exploding' do
|
374
|
-
broder_vs_epsilon = File.expand_path('
|
375
|
-
special_characters = File.expand_path('
|
376
|
-
very_special_characters = File.expand_path('
|
377
|
-
ntraum_example = File.expand_path('
|
378
|
-
detailed_damage = File.expand_path('
|
393
|
+
broder_vs_epsilon = File.expand_path('../../fixtures/logs/broder_vs_epsilon.log', __dir__)
|
394
|
+
special_characters = File.expand_path('../../fixtures/logs/special_characters.log', __dir__)
|
395
|
+
very_special_characters = File.expand_path('../../fixtures/logs/very_special_characters.log', __dir__)
|
396
|
+
ntraum_example = File.expand_path('../../fixtures/logs/example.log', __dir__)
|
397
|
+
detailed_damage = File.expand_path('../../fixtures/logs/detailed_damage.log', __dir__)
|
379
398
|
log_files = [broder_vs_epsilon, special_characters, very_special_characters, ntraum_example, detailed_damage]
|
380
399
|
|
381
400
|
log_files.each do |log_file|
|
382
401
|
log = File.read(log_file)
|
383
|
-
expect
|
402
|
+
expect do
|
384
403
|
log.lines.map(&:to_s).each do |line|
|
385
404
|
parse(line)
|
386
405
|
end
|
387
|
-
|
406
|
+
end.to_not raise_error
|
388
407
|
end
|
389
408
|
end
|
390
409
|
|
391
410
|
it 'recognizes cs:go chat' do
|
392
411
|
line = csgo_log_lines[299]
|
393
|
-
name =
|
394
|
-
steam_id =
|
412
|
+
name = '• Ben •'
|
413
|
+
steam_id = 'STEAM_1:0:160621749'
|
395
414
|
team = 'TERRORIST'
|
396
|
-
message =
|
415
|
+
message = '!rcon changelevel de_dust2'
|
397
416
|
expect(Events::Say).to receive(:new).with(anything, name, steam_id, team, message)
|
398
417
|
parse(line)
|
399
418
|
end
|
400
419
|
|
401
420
|
it "doesn't fall for twiikuu's cheeky name" do
|
402
421
|
player_name = 't<1><[U:1:123456]><Red>" say "'
|
403
|
-
line = %
|
422
|
+
line = %(L 02/07/2013 - 21:22:08: "#{player_name}<5><[U:1:1337]><Red>" say "!who")
|
404
423
|
|
405
424
|
name = 't<1><[U:1:123456]><Red>" say "'
|
406
|
-
steam_id =
|
425
|
+
steam_id = '[U:1:1337]'
|
407
426
|
team = 'Red'
|
408
|
-
message =
|
427
|
+
message = '!who'
|
409
428
|
expect(Events::Say).to receive(:new).with(anything, name, steam_id, team, message)
|
410
429
|
|
411
430
|
parse(line)
|
@@ -1,15 +1,13 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'spec_helper'
|
3
4
|
|
4
5
|
module TF2LineParser
|
5
|
-
|
6
6
|
describe Player do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
p2 = Player.new("Arie fakenicking", "12345", "Red")
|
7
|
+
it 'compares based on steam_id' do
|
8
|
+
p1 = Player.new('Arie', '12345', 'Red')
|
9
|
+
p2 = Player.new('Arie fakenicking', '12345', 'Red')
|
11
10
|
expect(p1).to eq p2
|
12
11
|
end
|
13
|
-
|
14
12
|
end
|
15
13
|
end
|
data/spec/spec_helper.rb
CHANGED
data/tf2_line_parser.gemspec
CHANGED
@@ -1,21 +1,22 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('lib/tf2_line_parser/version', __dir__)
|
3
4
|
|
4
5
|
Gem::Specification.new do |gem|
|
5
6
|
gem.name = 'tf2_line_parser'
|
6
7
|
gem.version = TF2LineParser::VERSION
|
7
8
|
gem.date = Time.new
|
8
|
-
gem.summary =
|
9
|
-
gem.description =
|
10
|
-
gem.authors = [
|
9
|
+
gem.summary = 'TF2 log line parser'
|
10
|
+
gem.description = 'A gem to parse log lines from TF2 servers'
|
11
|
+
gem.authors = ['Arie']
|
11
12
|
gem.email = 'rubygems@ariekanarie.nl'
|
12
|
-
gem.files = `git ls-files`.split(
|
13
|
+
gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
13
14
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
-
gem.require_paths = [
|
15
|
+
gem.require_paths = ['lib']
|
15
16
|
gem.homepage = 'http://github.com/Arie/tf2_line_parser'
|
16
17
|
|
17
|
-
gem.add_dependency
|
18
|
+
gem.add_dependency 'activesupport'
|
18
19
|
gem.add_development_dependency 'coveralls'
|
19
|
-
gem.add_development_dependency
|
20
|
-
gem.add_development_dependency
|
20
|
+
gem.add_development_dependency 'pry-nav'
|
21
|
+
gem.add_development_dependency 'rspec', '~> 3.5.0'
|
21
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tf2_line_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/tf2_line_parser/events/console_say.rb
|
90
90
|
- lib/tf2_line_parser/events/current_score.rb
|
91
91
|
- lib/tf2_line_parser/events/damage.rb
|
92
|
+
- lib/tf2_line_parser/events/disconnect.rb
|
92
93
|
- lib/tf2_line_parser/events/domination.rb
|
93
94
|
- lib/tf2_line_parser/events/event.rb
|
94
95
|
- lib/tf2_line_parser/events/final_score.rb
|