tf2_line_parser 0.2.1 → 0.2.2
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/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
|