tf2_line_parser 0.1.3 → 0.2.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 (49) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.travis.yml +5 -3
  4. data/Gemfile.lock +44 -42
  5. data/lib/tf2_line_parser.rb +2 -0
  6. data/lib/tf2_line_parser/events/airshot.rb +3 -2
  7. data/lib/tf2_line_parser/events/assist.rb +2 -1
  8. data/lib/tf2_line_parser/events/capture_block.rb +2 -1
  9. data/lib/tf2_line_parser/events/charge_deployed.rb +2 -1
  10. data/lib/tf2_line_parser/events/chat.rb +3 -2
  11. data/lib/tf2_line_parser/events/connect.rb +25 -0
  12. data/lib/tf2_line_parser/events/console_say.rb +2 -1
  13. data/lib/tf2_line_parser/events/current_score.rb +2 -1
  14. data/lib/tf2_line_parser/events/damage.rb +5 -4
  15. data/lib/tf2_line_parser/events/domination.rb +2 -1
  16. data/lib/tf2_line_parser/events/event.rb +11 -10
  17. data/lib/tf2_line_parser/events/final_score.rb +2 -1
  18. data/lib/tf2_line_parser/events/headshot_damage.rb +32 -0
  19. data/lib/tf2_line_parser/events/heal.rb +2 -1
  20. data/lib/tf2_line_parser/events/kill.rb +4 -3
  21. data/lib/tf2_line_parser/events/match_end.rb +2 -1
  22. data/lib/tf2_line_parser/events/medic_death.rb +3 -2
  23. data/lib/tf2_line_parser/events/pickup_item.rb +3 -2
  24. data/lib/tf2_line_parser/events/player_action_event.rb +2 -1
  25. data/lib/tf2_line_parser/events/point_capture.rb +2 -1
  26. data/lib/tf2_line_parser/events/pvp_event.rb +1 -0
  27. data/lib/tf2_line_parser/events/revenge.rb +2 -1
  28. data/lib/tf2_line_parser/events/role_change.rb +3 -2
  29. data/lib/tf2_line_parser/events/round_event_with_variables.rb +2 -1
  30. data/lib/tf2_line_parser/events/round_event_without_variables.rb +2 -1
  31. data/lib/tf2_line_parser/events/round_length.rb +3 -2
  32. data/lib/tf2_line_parser/events/round_stalemate.rb +2 -1
  33. data/lib/tf2_line_parser/events/round_start.rb +2 -1
  34. data/lib/tf2_line_parser/events/round_win.rb +3 -2
  35. data/lib/tf2_line_parser/events/score.rb +3 -2
  36. data/lib/tf2_line_parser/events/spawn.rb +2 -1
  37. data/lib/tf2_line_parser/events/suicide.rb +3 -2
  38. data/lib/tf2_line_parser/events/unknown.rb +3 -2
  39. data/lib/tf2_line_parser/line.rb +1 -1
  40. data/lib/tf2_line_parser/parser.rb +1 -0
  41. data/lib/tf2_line_parser/player.rb +1 -0
  42. data/lib/tf2_line_parser/version.rb +2 -1
  43. data/spec/fixtures/logs/csgo.log +339 -0
  44. data/spec/lib/tf2_line_parser/parser_spec.rb +74 -35
  45. data/spec/lib/tf2_line_parser/player_spec.rb +1 -1
  46. data/spec/spec_helper.rb +1 -1
  47. data/tf2_line_parser.gemspec +2 -2
  48. metadata +13 -11
  49. data/lib/tidy_bytes_monkey_patch.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2825ff230816070e4e8366d22597a64357f120a8
4
- data.tar.gz: 3243bedc7c00fb567f1960c1ba69578d0fb2260b
2
+ SHA256:
3
+ metadata.gz: e22961d8f12fb908e7200eeeab6dbf8ead59064e36b58585577947df3363aeac
4
+ data.tar.gz: 065b72078b85b1bf414f7d7cc318cfb7c7c315e3beb417d19e0ded93120b3f11
5
5
  SHA512:
6
- metadata.gz: c85bba52b3f353a25408c7b5d25d6c7769c6bdc2c18875f6cf18c1b9c7d9b5cae29066fd0f619c397135130bd33ae0366b023441794597be8e93bfce4c2a2904
7
- data.tar.gz: aa4400c2b4245f4c1a3bd7bfb13ca7d54ffb56f959055233dcca404dfca5c6b45d8ec4212bd800eae83d76a5680cbd211ea24a732be7a0787d6c8d1f1d0f7187
6
+ metadata.gz: 464ac8116f2e6857c17156d5c6ed6f48dd8ca1d4c5367cb08ef0bb38e72e9e70675741c140b9722f223309df3c027500f86e726bd4d7e7447826b4e44047687e
7
+ data.tar.gz: eb66bc6afc1dc620003d19b9d812fe13f4bc8718a8a1c4bb50e2ce459fc83cdd1c192ee0fa44094ec01f38022b2ce8a711d288fa51a72e8bcf5d45634cbed739
data/.gitignore CHANGED
@@ -12,6 +12,7 @@ test/tmp
12
12
  test/version_tmp
13
13
  tmp
14
14
  rspec.html
15
+ vendor/bundle
15
16
 
16
17
  # RBX files
17
18
  .rbx/
data/.travis.yml CHANGED
@@ -1,6 +1,8 @@
1
1
  language: ruby
2
+ cache: bundler
2
3
  rvm:
3
- - 1.9.3
4
- - rbx
5
- - jruby-19mode
4
+ - 2.3.8
5
+ - 2.4.5
6
+ - 2.5.3
6
7
  script: ./script/ci
8
+ sudo: false
data/Gemfile.lock CHANGED
@@ -1,63 +1,62 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tf2_line_parser (0.1.2)
4
+ tf2_line_parser (0.2.0)
5
5
  activesupport
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (4.1.5)
11
- i18n (~> 0.6, >= 0.6.9)
12
- json (~> 1.7, >= 1.7.7)
10
+ activesupport (5.1.2)
11
+ concurrent-ruby (~> 1.0, >= 1.0.2)
12
+ i18n (~> 0.7)
13
13
  minitest (~> 5.1)
14
- thread_safe (~> 0.1)
15
14
  tzinfo (~> 1.1)
16
- coderay (1.1.0)
17
- coveralls (0.7.1)
18
- multi_json (~> 1.3)
19
- rest-client
20
- simplecov (>= 0.7)
21
- term-ansicolor
22
- thor
23
- diff-lcs (1.2.5)
15
+ coderay (1.1.1)
16
+ concurrent-ruby (1.0.5)
17
+ coveralls (0.8.21)
18
+ json (>= 1.8, < 3)
19
+ simplecov (~> 0.14.1)
20
+ term-ansicolor (~> 1.3)
21
+ thor (~> 0.19.4)
22
+ tins (~> 1.6)
23
+ diff-lcs (1.3)
24
24
  docile (1.1.5)
25
- i18n (0.6.11)
26
- json (1.8.1)
25
+ i18n (0.8.4)
26
+ json (2.1.0)
27
27
  method_source (0.8.2)
28
- mime-types (2.3)
29
- minitest (5.4.0)
30
- multi_json (1.10.1)
31
- netrc (0.7.7)
32
- pry (0.10.1)
28
+ minitest (5.10.2)
29
+ pry (0.10.4)
33
30
  coderay (~> 1.1.0)
34
31
  method_source (~> 0.8.1)
35
32
  slop (~> 3.4)
36
33
  pry-nav (0.2.4)
37
34
  pry (>= 0.9.10, < 0.11.0)
38
- rest-client (1.7.2)
39
- mime-types (>= 1.16, < 3.0)
40
- netrc (~> 0.7)
41
- rspec (2.13.0)
42
- rspec-core (~> 2.13.0)
43
- rspec-expectations (~> 2.13.0)
44
- rspec-mocks (~> 2.13.0)
45
- rspec-core (2.13.1)
46
- rspec-expectations (2.13.0)
47
- diff-lcs (>= 1.1.3, < 2.0)
48
- rspec-mocks (2.13.1)
49
- simplecov (0.9.0)
35
+ rspec (3.5.0)
36
+ rspec-core (~> 3.5.0)
37
+ rspec-expectations (~> 3.5.0)
38
+ rspec-mocks (~> 3.5.0)
39
+ rspec-core (3.5.4)
40
+ rspec-support (~> 3.5.0)
41
+ rspec-expectations (3.5.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.5.0)
44
+ rspec-mocks (3.5.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.5.0)
47
+ rspec-support (3.5.0)
48
+ simplecov (0.14.1)
50
49
  docile (~> 1.1.0)
51
- multi_json
52
- simplecov-html (~> 0.8.0)
53
- simplecov-html (0.8.0)
50
+ json (>= 1.8, < 3)
51
+ simplecov-html (~> 0.10.0)
52
+ simplecov-html (0.10.1)
54
53
  slop (3.6.0)
55
- term-ansicolor (1.3.0)
54
+ term-ansicolor (1.6.0)
56
55
  tins (~> 1.0)
57
- thor (0.19.1)
58
- thread_safe (0.3.4)
59
- tins (1.3.2)
60
- tzinfo (1.2.2)
56
+ thor (0.19.4)
57
+ thread_safe (0.3.6)
58
+ tins (1.15.0)
59
+ tzinfo (1.2.3)
61
60
  thread_safe (~> 0.1)
62
61
 
63
62
  PLATFORMS
@@ -65,6 +64,9 @@ PLATFORMS
65
64
 
66
65
  DEPENDENCIES
67
66
  coveralls
68
- pry-nav (~> 0.2.3)
69
- rspec (~> 2.13.0)
67
+ pry-nav
68
+ rspec (~> 3.5.0)
70
69
  tf2_line_parser!
70
+
71
+ BUNDLED WITH
72
+ 1.14.5
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "tf2_line_parser/version"
2
3
  require "tf2_line_parser/parser"
3
4
  require "tf2_line_parser/player"
@@ -7,6 +8,7 @@ require "tf2_line_parser/events/pvp_event"
7
8
  require "tf2_line_parser/events/player_action_event"
8
9
  require "tf2_line_parser/events/round_event_without_variables"
9
10
  require "tf2_line_parser/events/round_event_with_variables"
11
+ require "tf2_line_parser/events/connect"
10
12
  require "tf2_line_parser/events/score"
11
13
  require "tf2_line_parser/events/role_change"
12
14
  require "tf2_line_parser/events/damage"
@@ -1,14 +1,15 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class Airshot < Damage
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?( #{regex_airshot})?)$/
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?( #{regex_airshot})?)$/.freeze
8
9
  end
9
10
 
10
11
  def self.regex_airshot
11
- @regex_airshot ||= /(\(airshot "(?'airshot'\w*)"\))?/
12
+ @regex_airshot ||= /(\(airshot "(?'airshot'\w*)"\))?/.freeze
12
13
  end
13
14
 
14
15
  def self.attributes
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class Assist < PVPEvent
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "kill assist" against #{regex_target}/
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "kill assist" against #{regex_target}/.freeze
8
9
  end
9
10
 
10
11
  end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class CaptureBlock < Event
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "captureblocked" #{regex_cap}/
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "captureblocked" #{regex_cap}/.freeze
8
9
  end
9
10
 
10
11
  def self.attributes
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class ChargeDeployed < Event
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "chargedeployed"/
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "chargedeployed"/.freeze
8
9
  end
9
10
 
10
11
  def self.attributes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
@@ -19,7 +20,7 @@ module TF2LineParser
19
20
  class Say < Chat
20
21
 
21
22
  def self.regex
22
- @regex ||= /#{regex_time} #{regex_player} say #{regex_message}/
23
+ @regex ||= /#{regex_time} #{regex_player} say #{regex_message}/.freeze
23
24
  end
24
25
 
25
26
  end
@@ -27,7 +28,7 @@ module TF2LineParser
27
28
  class TeamSay < Chat
28
29
 
29
30
  def self.regex
30
- @regex ||= /#{regex_time} #{regex_player} say_team #{regex_message}/
31
+ @regex ||= /#{regex_time} #{regex_player} say_team #{regex_message}/.freeze
31
32
  end
32
33
 
33
34
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ module TF2LineParser
3
+ module Events
4
+
5
+
6
+ class Connect < Event
7
+
8
+ def initialize(time, player_name, player_steam_id, player_team, message)
9
+ @time = parse_time(time)
10
+ @player = Player.new(player_name, player_steam_id, player_team)
11
+ @message = message
12
+ end
13
+
14
+ def self.attributes
15
+ @attributes ||= [:time, :player_nick, :player_steamid, :player_team, :message]
16
+ end
17
+
18
+ def self.regex
19
+ @regex ||= /#{regex_time} #{regex_player} connected, address #{regex_message}/.freeze
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class ConsoleSay < Event
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_console} say #{regex_message}/
8
+ @regex ||= /#{regex_time} #{regex_console} say #{regex_message}/.freeze
8
9
  end
9
10
 
10
11
  def self.attributes
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class CurrentScore < Score
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_team} current score #{regex_score} with .*/
8
+ @regex ||= /#{regex_time} #{regex_team} current score #{regex_score} with .*/.freeze
8
9
  end
9
10
 
10
11
  end
@@ -1,22 +1,23 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class Damage < Event
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?)$/
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?)$/.freeze
8
9
  end
9
10
 
10
11
  def self.regex_damage_against
11
- @regex_damage_against ||= /(against #{regex_target} )?/
12
+ @regex_damage_against ||= /(against #{regex_target} )?/.freeze
12
13
  end
13
14
 
14
15
  def self.regex_realdamage
15
- @regex_realdamage ||= /(\(realdamage "(?'realdamage'\w*)"\))?/
16
+ @regex_realdamage ||= /(\(realdamage "(?'realdamage'\w*)"\))?/.freeze
16
17
  end
17
18
 
18
19
  def self.regex_weapon
19
- @regex_weapon ||= /(\(weapon "(?'weapon'\w*)"\))?/
20
+ @regex_weapon ||= /(\(weapon "(?'weapon'\w*)"\))?/.freeze
20
21
  end
21
22
 
22
23
  def self.attributes
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class Domination < PVPEvent
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "domination" against #{regex_target}.*/
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "domination" against #{regex_target}.*/.freeze
8
9
  end
9
10
 
10
11
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
 
3
4
  module Events
@@ -10,39 +11,39 @@ module TF2LineParser
10
11
 
11
12
 
12
13
  def self.time_format
13
- @time_format ||= '%m/%d/%Y - %T'
14
+ @time_format ||= '%m/%d/%Y - %T'.freeze
14
15
  end
15
16
 
16
17
  def self.regex_time
17
- @regex_time ||= 'L (?\'time\'.*):'
18
+ @regex_time ||= 'L (?\'time\'.*):'.freeze
18
19
  end
19
20
 
20
21
  def self.regex_player
21
- @regex_player ||= '"(?\'player_nick\'.+)<(?\'player_uid\'\d+)><(?\'player_steamid\'(\[\S+\]|STEAM_\S+))><(?\'player_team\'Red|Blue|Spectator)>"'
22
+ @regex_player ||= '"(?\'player_nick\'.+)<(?\'player_uid\'\d+)><(?\'player_steamid\'(\[\S+\]|STEAM_\S+))><(?\'player_team\'Red|Blue|Spectator|TERRORIST|CT||)>"'.freeze
22
23
  end
23
24
 
24
25
  def self.regex_target
25
- @regex_target ||= '"(?\'target_nick\'.+)<(?\'target_uid\'\d+)><(?\'target_steamid\'(\[\S+\]|STEAM_\S+))><(?\'target_team\'Red|Blue)>"'
26
+ @regex_target ||= '"(?\'target_nick\'.+)<(?\'target_uid\'\d+)><(?\'target_steamid\'(\[\S+\]|STEAM_\S+))><(?\'target_team\'Red|Blue|TERRORIST|CT)>"'.freeze
26
27
  end
27
28
 
28
29
  def self.regex_cap
29
- @regex_cap ||= '\(cp "(?\'cp_number\'\d+)"\) \(cpname "(?\'cp_name\'.\w*)'
30
+ @regex_cap ||= '\(cp "(?\'cp_number\'\d+)"\) \(cpname "(?\'cp_name\'.\w*)'.freeze
30
31
  end
31
32
 
32
33
  def self.regex_console
33
- @regex_console ||= '"Console<0><Console><Console>"'
34
+ @regex_console ||= '"Console<0><Console><Console>"'.freeze
34
35
  end
35
36
 
36
37
  def self.regex_message
37
- @regex_message ||= '"(?\'message\'.*)"'
38
+ @regex_message ||= '"(?\'message\'.*)"'.freeze
38
39
  end
39
40
 
40
41
  def self.types
41
42
  #ordered by how common the messages are
42
43
  @types ||= [Damage, Heal, PickupItem, Assist, Kill, CaptureBlock, PointCapture, ChargeDeployed,
43
- MedicDeath, RoleChange, Spawn, Airshot, Suicide, Say, TeamSay, Domination, Revenge, RoundWin, CurrentScore,
44
- RoundLength, RoundStart, ConsoleSay, MatchEnd, FinalScore,
45
- RoundStalemate, Unknown]
44
+ MedicDeath, RoleChange, Spawn, Airshot, HeadshotDamage, Suicide, Say, TeamSay, Domination, Revenge, RoundWin, CurrentScore,
45
+ RoundLength, RoundStart, Connect, ConsoleSay, MatchEnd, FinalScore,
46
+ RoundStalemate, Unknown].freeze
46
47
  end
47
48
 
48
49
  def self.regex_results(matched_line)
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module TF2LineParser
2
3
  module Events
3
4
 
4
5
  class FinalScore < Score
5
6
 
6
7
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_team} final score #{regex_score} with .*/
8
+ @regex ||= /#{regex_time} #{regex_team} final score #{regex_score} with .*/.freeze
8
9
  end
9
10
 
10
11
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ module TF2LineParser
3
+ module Events
4
+
5
+ class HeadshotDamage < Damage
6
+
7
+ def self.regex
8
+ @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?) #{regex_headshot}$/.freeze
9
+ end
10
+
11
+ def self.regex_headshot
12
+ @regex_headshot ||= '\(headshot "(?\'headshot\'\d+)"\)'.freeze
13
+ end
14
+
15
+ def self.attributes
16
+ @attributes ||= [:time, :player_nick, :player_steamid, :player_team, :target_nick, :target_steamid, :target_team, :value, :weapon]
17
+ end
18
+
19
+ def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon)
20
+ @time = parse_time(time)
21
+ @player = Player.new(player_name, player_steamid, player_team)
22
+ if target_name
23
+ @target = Player.new(target_name, target_steamid, target_team)
24
+ end
25
+ @value = value.to_i
26
+ @weapon = weapon
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+