tf2_line_parser 0.1.1 → 0.1.3

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- M2ZkN2ViOTA5OWI4MzIyZmNhMjAxN2VhNmRjNGRlMjA4MTM1MTQzZg==
5
- data.tar.gz: !binary |-
6
- MGVjYjdlMzQ4YWJjYzVhYWUyMTJhMzg1YzE2NTI2MTQ2NDhhN2MyZg==
2
+ SHA1:
3
+ metadata.gz: 2825ff230816070e4e8366d22597a64357f120a8
4
+ data.tar.gz: 3243bedc7c00fb567f1960c1ba69578d0fb2260b
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YWFjNmUyMTg1ZDE0ZGQwMmEzZTkzZTRjZjI4YzFmY2VmM2UwZDYzYjAzOTM1
10
- ZWUxYzAzMzQ0MzI2NGM0NWUyYTg4YWM3YTYwMGY5YWE1MTVhMThkYTUyYWVm
11
- OWRjOGMzMTNlZGZlZTdlZTJmNjQ0NDZjMzcyMWUyYjRhNTE5MGI=
12
- data.tar.gz: !binary |-
13
- M2FjMTNiOWJlOTFiZTg5ZmZmZTc4NmM1YjdhNDE3ZWI2Mzk0YzM5NzkxOThh
14
- NTQyODI3MDcyNzRiMGQ5MmYxYzBlZDVhNzFjZDhhY2Y0OGEyYjk0MTIxZTY0
15
- ZDVhNmVkNzA2YTA4ZjVlZWJjYzBmZmQ3YjZiNTNmYWZiNTdjNmI=
6
+ metadata.gz: c85bba52b3f353a25408c7b5d25d6c7769c6bdc2c18875f6cf18c1b9c7d9b5cae29066fd0f619c397135130bd33ae0366b023441794597be8e93bfce4c2a2904
7
+ data.tar.gz: aa4400c2b4245f4c1a3bd7bfb13ca7d54ffb56f959055233dcca404dfca5c6b45d8ec4212bd800eae83d76a5680cbd211ea24a732be7a0787d6c8d1f1d0f7187
data/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
- - rbx-19mode
4
+ - rbx
5
5
  - jruby-19mode
6
6
  script: ./script/ci
data/Gemfile.lock CHANGED
@@ -1,41 +1,43 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tf2_line_parser (0.1.0)
4
+ tf2_line_parser (0.1.2)
5
5
  activesupport
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (4.0.2)
11
- i18n (~> 0.6, >= 0.6.4)
12
- minitest (~> 4.2)
13
- multi_json (~> 1.3)
10
+ activesupport (4.1.5)
11
+ i18n (~> 0.6, >= 0.6.9)
12
+ json (~> 1.7, >= 1.7.7)
13
+ minitest (~> 5.1)
14
14
  thread_safe (~> 0.1)
15
- tzinfo (~> 0.3.37)
16
- atomic (1.1.14)
17
- coderay (1.0.9)
18
- colorize (0.5.8)
19
- coveralls (0.6.7)
20
- colorize
15
+ tzinfo (~> 1.1)
16
+ coderay (1.1.0)
17
+ coveralls (0.7.1)
21
18
  multi_json (~> 1.3)
22
19
  rest-client
23
20
  simplecov (>= 0.7)
21
+ term-ansicolor
24
22
  thor
25
- diff-lcs (1.2.4)
26
- i18n (0.6.9)
27
- method_source (0.8.1)
28
- mime-types (1.23)
29
- minitest (4.7.5)
30
- multi_json (1.7.7)
31
- pry (0.9.12.2)
32
- coderay (~> 1.0.5)
33
- method_source (~> 0.8)
23
+ diff-lcs (1.2.5)
24
+ docile (1.1.5)
25
+ i18n (0.6.11)
26
+ json (1.8.1)
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)
33
+ coderay (~> 1.1.0)
34
+ method_source (~> 0.8.1)
34
35
  slop (~> 3.4)
35
- pry-nav (0.2.3)
36
- pry (~> 0.9.10)
37
- rest-client (1.6.7)
38
- mime-types (>= 1.16)
36
+ pry-nav (0.2.4)
37
+ pry (>= 0.9.10, < 0.11.0)
38
+ rest-client (1.7.2)
39
+ mime-types (>= 1.16, < 3.0)
40
+ netrc (~> 0.7)
39
41
  rspec (2.13.0)
40
42
  rspec-core (~> 2.13.0)
41
43
  rspec-expectations (~> 2.13.0)
@@ -44,15 +46,19 @@ GEM
44
46
  rspec-expectations (2.13.0)
45
47
  diff-lcs (>= 1.1.3, < 2.0)
46
48
  rspec-mocks (2.13.1)
47
- simplecov (0.7.1)
48
- multi_json (~> 1.0)
49
- simplecov-html (~> 0.7.1)
50
- simplecov-html (0.7.1)
51
- slop (3.4.5)
52
- thor (0.18.1)
53
- thread_safe (0.1.3)
54
- atomic
55
- tzinfo (0.3.38)
49
+ simplecov (0.9.0)
50
+ docile (~> 1.1.0)
51
+ multi_json
52
+ simplecov-html (~> 0.8.0)
53
+ simplecov-html (0.8.0)
54
+ slop (3.6.0)
55
+ term-ansicolor (1.3.0)
56
+ tins (~> 1.0)
57
+ thor (0.19.1)
58
+ thread_safe (0.3.4)
59
+ tins (1.3.2)
60
+ tzinfo (1.2.2)
61
+ thread_safe (~> 0.1)
56
62
 
57
63
  PLATFORMS
58
64
  ruby
@@ -9,6 +9,7 @@ require "tf2_line_parser/events/round_event_without_variables"
9
9
  require "tf2_line_parser/events/round_event_with_variables"
10
10
  require "tf2_line_parser/events/score"
11
11
  require "tf2_line_parser/events/role_change"
12
+ require "tf2_line_parser/events/damage"
12
13
  Dir[File.dirname(__FILE__) + '/tf2_line_parser/events/*.rb'].each {|file| require file }
13
14
  require "tf2_line_parser/line"
14
15
 
@@ -0,0 +1,31 @@
1
+ module TF2LineParser
2
+ module Events
3
+
4
+ class Airshot < Damage
5
+
6
+ def self.regex
7
+ @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?( #{regex_airshot})?)$/
8
+ end
9
+
10
+ def self.regex_airshot
11
+ @regex_airshot ||= /(\(airshot "(?'airshot'\w*)"\))?/
12
+ end
13
+
14
+ def self.attributes
15
+ @attributes ||= [:time, :player_nick, :player_steamid, :player_team, :target_nick, :target_steamid, :target_team, :value, :weapon, :airshot]
16
+ end
17
+
18
+ def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon, airshot)
19
+ @time = parse_time(time)
20
+ @player = Player.new(player_name, player_steamid, player_team)
21
+ if target_name
22
+ @target = Player.new(target_name, target_steamid, target_team)
23
+ end
24
+ @value = value.to_i
25
+ @weapon = weapon
26
+ @airshot = (airshot.to_i == 1)
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -4,24 +4,33 @@ module TF2LineParser
4
4
  class Damage < Event
5
5
 
6
6
  def self.regex
7
- @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)/
7
+ @regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?)$/
8
8
  end
9
9
 
10
10
  def self.regex_damage_against
11
11
  @regex_damage_against ||= /(against #{regex_target} )?/
12
12
  end
13
13
 
14
+ def self.regex_realdamage
15
+ @regex_realdamage ||= /(\(realdamage "(?'realdamage'\w*)"\))?/
16
+ end
17
+
18
+ def self.regex_weapon
19
+ @regex_weapon ||= /(\(weapon "(?'weapon'\w*)"\))?/
20
+ end
21
+
14
22
  def self.attributes
15
- @attributes ||= [:time, :player_nick, :player_steamid, :player_team, :target_nick, :target_steamid, :target_team, :value]
23
+ @attributes ||= [:time, :player_nick, :player_steamid, :player_team, :target_nick, :target_steamid, :target_team, :value, :weapon]
16
24
  end
17
25
 
18
- def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value)
26
+ def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon)
19
27
  @time = parse_time(time)
20
28
  @player = Player.new(player_name, player_steamid, player_team)
21
29
  if target_name
22
30
  @target = Player.new(target_name, target_steamid, target_team)
23
31
  end
24
32
  @value = value.to_i
33
+ @weapon = weapon
25
34
  end
26
35
 
27
36
  end
@@ -6,7 +6,7 @@ module TF2LineParser
6
6
 
7
7
  attr_accessor :time, :type, :cap_number, :cap_name, :message, :unknown
8
8
  attr_accessor :team, :score, :value, :item, :role, :length, :method
9
- attr_accessor :player, :target, :healing, :ubercharge, :customkill, :weapon
9
+ attr_accessor :player, :target, :healing, :ubercharge, :customkill, :weapon, :airshot
10
10
 
11
11
 
12
12
  def self.time_format
@@ -18,11 +18,11 @@ module TF2LineParser
18
18
  end
19
19
 
20
20
  def self.regex_player
21
- @regex_player ||= '"(?\'player_nick\'.+)<(?\'player_uid\'\d+)><(?\'player_steamid\'STEAM_\S+)><(?\'player_team\'Red|Blue)>"'
21
+ @regex_player ||= '"(?\'player_nick\'.+)<(?\'player_uid\'\d+)><(?\'player_steamid\'(\[\S+\]|STEAM_\S+))><(?\'player_team\'Red|Blue|Spectator)>"'
22
22
  end
23
23
 
24
24
  def self.regex_target
25
- @regex_target ||= '"(?\'target_nick\'.+)<(?\'target_uid\'\d+)><(?\'target_steamid\'STEAM_\S+)><(?\'target_team\'Red|Blue)>"'
25
+ @regex_target ||= '"(?\'target_nick\'.+)<(?\'target_uid\'\d+)><(?\'target_steamid\'(\[\S+\]|STEAM_\S+))><(?\'target_team\'Red|Blue)>"'
26
26
  end
27
27
 
28
28
  def self.regex_cap
@@ -40,7 +40,7 @@ module TF2LineParser
40
40
  def self.types
41
41
  #ordered by how common the messages are
42
42
  @types ||= [Damage, Heal, PickupItem, Assist, Kill, CaptureBlock, PointCapture, ChargeDeployed,
43
- MedicDeath, RoleChange, Spawn, Suicide, Say, TeamSay, Domination, Revenge, RoundWin, CurrentScore,
43
+ MedicDeath, RoleChange, Spawn, Airshot, Suicide, Say, TeamSay, Domination, Revenge, RoundWin, CurrentScore,
44
44
  RoundLength, RoundStart, ConsoleSay, MatchEnd, FinalScore,
45
45
  RoundStalemate, Unknown]
46
46
  end
@@ -1,3 +1,3 @@
1
1
  module TF2LineParser
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.3'
3
3
  end
@@ -0,0 +1 @@
1
+ L 05/15/2014 - 18:22:27: "super sanic<5><STEAM_0:0:64268661><Red>" triggered "damage" against "kerrieebOb<11><STEAM_0:0:11431287><Blue>" (damage "47") (weapon "tf_projectile_rocket") (airshot "1")
@@ -0,0 +1 @@
1
+ L 08/22/2014 - 00:30:31: "iM yUKi intel @i52<6><[U:1:3825470]><Blue>" triggered "damage" against "mix^ enigma @ i52<8><[U:1:33652944]><Red>" (damage "78") (realdamage "67") (weapon "tf_projectile_rocket")
@@ -12,6 +12,12 @@ module TF2LineParser
12
12
  let(:detailed_log_file) { File.expand_path('../../../fixtures/logs/detailed_damage.log', __FILE__) }
13
13
  let(:detailed_log) { File.read(detailed_log_file) }
14
14
  let(:detailed_log_lines) { detailed_log.lines.map(&:to_s) }
15
+ let(:airshot_log_file) { File.expand_path('../../../fixtures/logs/airshot.log', __FILE__) }
16
+ let(:airshot_log) { File.read(airshot_log_file) }
17
+ let(:airshot_log_lines) { airshot_log.lines.map(&:to_s) }
18
+ let(:new_log_file) { File.expand_path('../../../fixtures/logs/new_log.log', __FILE__) }
19
+ let(:new_log) { File.read(new_log_file) }
20
+ let(:new_log_lines) { new_log.lines.map(&:to_s) }
15
21
 
16
22
  describe '#new' do
17
23
 
@@ -33,7 +39,22 @@ module TF2LineParser
33
39
  player_steam_id = "STEAM_0:1:16347045"
34
40
  player_team = 'Red'
35
41
  value = '69'
36
- Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, nil, nil, nil, value)
42
+ weapon = nil
43
+ Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, nil, nil, nil, value, weapon)
44
+ parse(line)
45
+ end
46
+
47
+ it 'recognizes new steam id log lines with detailed damage' do
48
+ line = new_log_lines[0]
49
+ player_name = "iM yUKi intel @i52"
50
+ player_steam_id = "[U:1:3825470]"
51
+ player_team = 'Blue'
52
+ target_team = "Red"
53
+ target_name = "mix^ enigma @ i52"
54
+ target_steam_id = "[U:1:33652944]"
55
+ value = '78'
56
+ weapon = "tf_projectile_rocket"
57
+ Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value, weapon)
37
58
  parse(line)
38
59
  end
39
60
 
@@ -46,10 +67,19 @@ module TF2LineParser
46
67
  target_steam_id = "STEAM_0:0:43087158"
47
68
  target_team = "Red"
48
69
  value = "102"
49
- Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value)
70
+ weapon = "tf_projectile_pipe"
71
+ Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value, weapon)
50
72
  parse(line)
51
73
  end
52
74
 
75
+ it 'recognizes airshots' do
76
+ line = airshot_log_lines[0]
77
+ weapon = "tf_projectile_rocket"
78
+ airshot = "1"
79
+ Events::Airshot.should_receive(:new).with(anything, anything, anything, anything, anything, anything, anything, anything, weapon, airshot)
80
+ parse(line).inspect
81
+ end
82
+
53
83
  it 'ignores realdamage' do
54
84
  line = detailed_log_lines[65]
55
85
  player_name = "LittleLies"
@@ -59,7 +89,8 @@ module TF2LineParser
59
89
  target_steam_id = "STEAM_0:0:43087158"
60
90
  target_team = "Red"
61
91
  value = "98"
62
- Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value)
92
+ weapon = "tf_projectile_pipe"
93
+ Events::Damage.should_receive(:new).with(anything, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value, weapon)
63
94
  parse(line)
64
95
  end
65
96
 
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tf2_line_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-03 00:00:00.000000000 Z
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: coveralls
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry-nav
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.2.3
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.2.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.13.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.13.0
69
69
  description: A gem to parse log lines from TF2 servers
@@ -72,14 +72,15 @@ executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
- - .coverage
76
- - .gitignore
77
- - .rspec
78
- - .travis.yml
75
+ - ".coverage"
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
79
  - Gemfile
80
80
  - Gemfile.lock
81
81
  - README.md
82
82
  - lib/tf2_line_parser.rb
83
+ - lib/tf2_line_parser/events/airshot.rb
83
84
  - lib/tf2_line_parser/events/assist.rb
84
85
  - lib/tf2_line_parser/events/capture_block.rb
85
86
  - lib/tf2_line_parser/events/charge_deployed.rb
@@ -117,9 +118,11 @@ files:
117
118
  - lib/tidy_bytes_monkey_patch.rb
118
119
  - script/bundler
119
120
  - script/ci
121
+ - spec/fixtures/logs/airshot.log
120
122
  - spec/fixtures/logs/broder_vs_epsilon.log
121
123
  - spec/fixtures/logs/detailed_damage.log
122
124
  - spec/fixtures/logs/example.log
125
+ - spec/fixtures/logs/new_log.log
123
126
  - spec/fixtures/logs/special_characters.log
124
127
  - spec/fixtures/logs/very_special_characters.log
125
128
  - spec/lib/tf2_line_parser/parser_spec.rb
@@ -135,27 +138,28 @@ require_paths:
135
138
  - lib
136
139
  required_ruby_version: !ruby/object:Gem::Requirement
137
140
  requirements:
138
- - - ! '>='
141
+ - - ">="
139
142
  - !ruby/object:Gem::Version
140
143
  version: '0'
141
144
  required_rubygems_version: !ruby/object:Gem::Requirement
142
145
  requirements:
143
- - - ! '>='
146
+ - - ">="
144
147
  - !ruby/object:Gem::Version
145
148
  version: '0'
146
149
  requirements: []
147
150
  rubyforge_project:
148
- rubygems_version: 2.1.9
151
+ rubygems_version: 2.2.2
149
152
  signing_key:
150
153
  specification_version: 4
151
154
  summary: TF2 log line parser
152
155
  test_files:
156
+ - spec/fixtures/logs/airshot.log
153
157
  - spec/fixtures/logs/broder_vs_epsilon.log
154
158
  - spec/fixtures/logs/detailed_damage.log
155
159
  - spec/fixtures/logs/example.log
160
+ - spec/fixtures/logs/new_log.log
156
161
  - spec/fixtures/logs/special_characters.log
157
162
  - spec/fixtures/logs/very_special_characters.log
158
163
  - spec/lib/tf2_line_parser/parser_spec.rb
159
164
  - spec/lib/tf2_line_parser/player_spec.rb
160
165
  - spec/spec_helper.rb
161
- has_rdoc: