tf2_line_parser 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: