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,16 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
module TF2LineParser
|
3
2
|
|
3
|
+
module TF2LineParser
|
4
4
|
module Events
|
5
|
-
|
6
5
|
class PlayerActionEvent < Event
|
7
|
-
|
8
6
|
def self.regex
|
9
7
|
@regex ||= /#{regex_time} #{regex_player} #{action_text} #{regex_action}/.freeze
|
10
8
|
end
|
11
9
|
|
12
10
|
def self.attributes
|
13
|
-
@attributes ||= [:time, :player_nick, :player_steamid, :player_team,
|
11
|
+
@attributes ||= [:time, :player_nick, :player_steamid, :player_team, item]
|
14
12
|
end
|
15
13
|
|
16
14
|
def initialize(time, player_name, player_steam_id, player_team, item = self.class.item)
|
@@ -18,7 +16,6 @@ module TF2LineParser
|
|
18
16
|
@player = Player.new(player_name, player_steam_id, player_team)
|
19
17
|
instance_variable_set("@#{self.class.item}", item)
|
20
18
|
end
|
21
|
-
|
22
19
|
end
|
23
20
|
end
|
24
21
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class PointCapture < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} Team "(?'team'Red|Blue)" triggered "pointcaptured" \(cp "(?'cp_number'\d+)"\) \(cpname "(?'cp_name'.*)"\) \(numcappers/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.attributes
|
12
|
-
@attributes ||= [
|
11
|
+
@attributes ||= %i[time team cp_number cp_name]
|
13
12
|
end
|
14
13
|
|
15
14
|
def initialize(time, team, cap_number, cap_name)
|
@@ -18,8 +17,6 @@ module TF2LineParser
|
|
18
17
|
@cap_number = cap_number
|
19
18
|
@cap_name = cap_name
|
20
19
|
end
|
21
|
-
|
22
20
|
end
|
23
|
-
|
24
21
|
end
|
25
22
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
module TF2LineParser
|
3
2
|
|
3
|
+
module TF2LineParser
|
4
4
|
module Events
|
5
|
-
|
6
5
|
class PVPEvent < Event
|
7
6
|
def self.attributes
|
8
|
-
@attributes ||= [
|
7
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
8
|
+
target_team]
|
9
9
|
end
|
10
10
|
|
11
11
|
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team)
|
@@ -1,21 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoleChange < PlayerActionEvent
|
6
|
-
|
7
6
|
def self.action_text
|
8
|
-
@action_text ||=
|
7
|
+
@action_text ||= 'changed role to'
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_action
|
12
|
-
@regex_role ||= '\"(?\'role\'.*)\"'
|
11
|
+
@regex_role ||= '\"(?\'role\'.*)\"'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.item
|
16
15
|
:role
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoundEventWithVariables < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} World triggered "#{round_type}" #{round_variable_regex}/.freeze
|
9
8
|
end
|
@@ -16,8 +15,6 @@ module TF2LineParser
|
|
16
15
|
@time = parse_time(time)
|
17
16
|
instance_variable_set("@#{self.class.round_variable}", round_variable)
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
|
-
|
22
19
|
end
|
23
20
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoundEventWithoutVariables < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} World triggered "#{round_type}"/.freeze
|
9
8
|
end
|
@@ -15,8 +14,6 @@ module TF2LineParser
|
|
15
14
|
def initialize(time)
|
16
15
|
@time = parse_time(time)
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
19
|
end
|
@@ -1,22 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoundLength < RoundEventWithVariables
|
6
|
-
|
7
6
|
def self.round_type
|
8
|
-
@round_type ||=
|
7
|
+
@round_type ||= 'Round_Length'
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.round_variable_regex
|
12
|
-
@round_variable_regex ||= /\(seconds
|
11
|
+
@round_variable_regex ||= /\(seconds "(?'length'.*)"\)/.freeze
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.round_variable
|
16
15
|
@round_variable ||= :length
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
19
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoundStalemate < RoundEventWithoutVariables
|
6
|
-
|
7
6
|
def self.round_type
|
8
|
-
@round_type ||=
|
7
|
+
@round_type ||= 'Round_Stalemate'
|
9
8
|
end
|
10
|
-
|
11
9
|
end
|
12
|
-
|
13
10
|
end
|
14
11
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoundStart < RoundEventWithoutVariables
|
6
|
-
|
7
6
|
def self.round_type
|
8
|
-
@round_type ||=
|
7
|
+
@round_type ||= 'Round_Start'
|
9
8
|
end
|
10
|
-
|
11
9
|
end
|
12
|
-
|
13
10
|
end
|
14
11
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class RoundWin < RoundEventWithVariables
|
6
|
-
|
7
6
|
def self.round_type
|
8
|
-
@round_type ||=
|
7
|
+
@round_type ||= 'Round_Win'
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.round_variable_regex
|
@@ -15,8 +14,6 @@ module TF2LineParser
|
|
15
14
|
def self.round_variable
|
16
15
|
@round_variable ||= :team
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
19
|
end
|
@@ -1,19 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Score < Event
|
6
|
-
|
7
6
|
def self.regex_score
|
8
|
-
@regex_score ||= '\"(?\'score\'\d+)\"'
|
7
|
+
@regex_score ||= '\"(?\'score\'\d+)\"'
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_team
|
12
|
-
@regex_team ||= 'Team \"(?\'team\'Red|Blue)\"'
|
11
|
+
@regex_team ||= 'Team \"(?\'team\'Red|Blue)\"'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.attributes
|
16
|
-
@attributes ||= [
|
15
|
+
@attributes ||= %i[time team score]
|
17
16
|
end
|
18
17
|
|
19
18
|
def initialize(time, team, score)
|
@@ -21,8 +20,6 @@ module TF2LineParser
|
|
21
20
|
@team = team
|
22
21
|
@score = score
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
|
-
|
27
24
|
end
|
28
25
|
end
|
@@ -1,21 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Suicide < PlayerActionEvent
|
6
|
-
|
7
6
|
def self.action_text
|
8
|
-
@action_text ||=
|
7
|
+
@action_text ||= 'committed suicide with'
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_action
|
12
|
-
@regex_role ||= '\"(?\'method\'\w*)\"'
|
11
|
+
@regex_role ||= '\"(?\'method\'\w*)\"'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.item
|
16
15
|
:method
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
@@ -1,27 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Unknown < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_unknown}/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_unknown
|
12
|
-
"(?'unknown'.*)"
|
11
|
+
"(?'unknown'.*)"
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.attributes
|
16
|
-
@attributes ||= [
|
15
|
+
@attributes ||= %i[time unknown]
|
17
16
|
end
|
18
17
|
|
19
18
|
def initialize(time, unknown)
|
20
19
|
@time = parse_time(time)
|
21
20
|
@unknown = unknown
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
25
|
-
|
26
23
|
end
|
27
24
|
end
|
data/lib/tf2_line_parser/line.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'time'
|
3
4
|
require 'active_support/multibyte/chars'
|
4
5
|
require 'active_support/multibyte/unicode'
|
5
6
|
|
6
7
|
module TF2LineParser
|
7
|
-
|
8
8
|
class Line
|
9
|
-
|
10
9
|
attr_accessor :line
|
11
10
|
|
12
11
|
def initialize(line)
|
@@ -28,7 +27,5 @@ module TF2LineParser
|
|
28
27
|
end
|
29
28
|
@match
|
30
29
|
end
|
31
|
-
|
32
30
|
end
|
33
|
-
|
34
31
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
module TF2LineParser
|
3
2
|
|
3
|
+
module TF2LineParser
|
4
4
|
class Player
|
5
|
-
|
6
5
|
attr_accessor :name, :steam_id, :team
|
7
6
|
|
8
7
|
def initialize(name, steam_id, team)
|
@@ -14,7 +13,5 @@ module TF2LineParser
|
|
14
13
|
def ==(other)
|
15
14
|
steam_id == other.steam_id
|
16
15
|
end
|
17
|
-
|
18
16
|
end
|
19
|
-
|
20
17
|
end
|
data/lib/tf2_line_parser.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "tf2_line_parser/version"
|
3
|
-
require "tf2_line_parser/parser"
|
4
|
-
require "tf2_line_parser/player"
|
5
|
-
|
6
|
-
require "tf2_line_parser/events/event"
|
7
|
-
require "tf2_line_parser/events/pvp_event"
|
8
|
-
require "tf2_line_parser/events/player_action_event"
|
9
|
-
require "tf2_line_parser/events/round_event_without_variables"
|
10
|
-
require "tf2_line_parser/events/round_event_with_variables"
|
11
|
-
require "tf2_line_parser/events/connect"
|
12
|
-
require "tf2_line_parser/events/score"
|
13
|
-
require "tf2_line_parser/events/role_change"
|
14
|
-
require "tf2_line_parser/events/damage"
|
15
|
-
Dir[File.dirname(__FILE__) + '/tf2_line_parser/events/*.rb'].each {|file| require file }
|
16
|
-
require "tf2_line_parser/line"
|
17
2
|
|
3
|
+
require 'tf2_line_parser/version'
|
4
|
+
require 'tf2_line_parser/parser'
|
5
|
+
require 'tf2_line_parser/player'
|
18
6
|
|
7
|
+
require 'tf2_line_parser/events/event'
|
8
|
+
require 'tf2_line_parser/events/pvp_event'
|
9
|
+
require 'tf2_line_parser/events/player_action_event'
|
10
|
+
require 'tf2_line_parser/events/round_event_without_variables'
|
11
|
+
require 'tf2_line_parser/events/round_event_with_variables'
|
12
|
+
require 'tf2_line_parser/events/connect'
|
13
|
+
require 'tf2_line_parser/events/score'
|
14
|
+
require 'tf2_line_parser/events/role_change'
|
15
|
+
require 'tf2_line_parser/events/damage'
|
16
|
+
Dir["#{File.dirname(__FILE__)}/tf2_line_parser/events/*.rb"].sort.each { |file| require file }
|
17
|
+
require 'tf2_line_parser/line'
|
19
18
|
|
20
19
|
module TF2LineParser
|
21
20
|
end
|
@@ -4540,4 +4540,5 @@ L 07/01/2013 - 15:22:46: "Imm.SPIRIT<117><STEAM_0:0:51202358><Blue>" spawned as
|
|
4540
4540
|
L 07/01/2013 - 15:22:46: "INF Scorpion's new acc<120><STEAM_0:0:42468138><Blue>" spawned as "Soldier"
|
4541
4541
|
L 07/01/2013 - 15:22:46: "snaaw<123><STEAM_0:1:59955670><Red>" spawned as "Medic"
|
4542
4542
|
L 07/01/2013 - 15:22:46: "candyyou # Infinity Gaming<124><STEAM_0:0:50979748><Red>" spawned as "Soldier"
|
4543
|
+
L 10/04/2012 - 21:25:53: "cc//TviQ<8><STEAM_0:0:8520477><Blue>" disconnected (reason "Disconnect by user.")
|
4543
4544
|
L 02/07/2013 - 21:56:13: Log file closed
|