steam_hlds_log_parser 0.5.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d6f4970900f52377acd0e1b941a3b9929afadec
4
- data.tar.gz: c899a1a093ffdbd74130d2d0df208aee17427e8f
3
+ metadata.gz: 3e50cd7e02251eb8f005cffa7db04028ef24c230
4
+ data.tar.gz: 088c9c2ae149c651c7c221885c5df6e3cbcb0b70
5
5
  SHA512:
6
- metadata.gz: 20193bfa2615cd4ff28c46d4ede73655dc2ba6dd2f8ad9bc8c296444efcda8e2009cb7b7c699a9157e7625965c6e1e2e1262791598065dab8f9a6911fae6d966
7
- data.tar.gz: 6cee787d6eb11cb295d8634f53f259b586b510d3f3630b916a7e845a5930fcd9e9f8e546b1275b00b0a2490a4d9106808f3f946f63f5064c450b1220464ee90e
6
+ metadata.gz: fe0846e0981463819ccd9e033c2ed5249fc2b6e0c63c59b5333089f635bfd7bca0660d451e059677aba809a4db8484fd1d11e7da661ea6b8a2b94f6c41617a6d
7
+ data.tar.gz: 6850d1f8eabfaf9fb55c5e3a3878c90582675d4ffab294a66d34499a1515187b026fd78dee4ef38754a1e35c850776f88019d06452e40f7a4e0a047b35bcb80e
@@ -18,7 +18,9 @@ options = {
18
18
  :display_actions => true,
19
19
  :display_changelevel => true,
20
20
  :display_chat => true,
21
- :display_team_chat => true
21
+ :display_team_chat => true,
22
+ :display_connect => true,
23
+ :display_disconnect => true
22
24
  }
23
25
 
24
26
  parser = SteamHldsLogParser::Client.new(Formatter, options)
data/lib/locales/en.yml CHANGED
@@ -42,3 +42,5 @@ en:
42
42
  loading_map: "Loading %{map}"
43
43
  chat: "[%{player_team}] %{player} says \"%{chat}\""
44
44
  team_chat: "[%{player_team}] %{player} says \"%{chat}\" to others [%{player_team}]"
45
+ connect: "%{player} is connecting"
46
+ disconnect: "%{player} disconnected"
data/lib/locales/fr.yml CHANGED
@@ -42,3 +42,5 @@ fr:
42
42
  loading_map: "Chargement de %{map}"
43
43
  chat: "[%{player_team}] %{player} dit \"%{chat}\""
44
44
  team_chat: "[%{player_team}] %{player} dit \"%{chat}\" aux autres [%{player_team}]"
45
+ connect: "%{player} se connecte"
46
+ disconnect: "%{player} s'est connecté"
@@ -21,6 +21,8 @@ module SteamHldsLogParser
21
21
  # @option options [Boolean] :display_changelevel (true) Enable changelevel (map) display
22
22
  # @option options [Boolean] :display_chat (true) Enable chat ('say') display
23
23
  # @option options [Boolean] :display_team_chat (true) Enable chat ('say_team') display
24
+ # @option options [Boolean] :display_connect (true) Enable player connection display
25
+ # @option options [Boolean] :display_disconnect (true) Enable player disconnection display
24
26
  #
25
27
  def initialize(displayer, options = {})
26
28
  default_options = {
@@ -32,6 +34,8 @@ module SteamHldsLogParser
32
34
  :display_changelevel => true,
33
35
  :display_chat => true,
34
36
  :display_team_chat => true,
37
+ :display_connect => true,
38
+ :display_disconnect => true
35
39
  }
36
40
  @options = default_options.merge(options)
37
41
  @displayer = displayer
@@ -39,6 +39,7 @@ module SteamHldsLogParser
39
39
  # * match changelevel
40
40
  # * match chat (say)
41
41
  # * match team chat (say_team)
42
+ # * user connections / disconnections
42
43
  #
43
44
  # @param [String] data Data received by Client from HLDS server (a line of log)
44
45
  #
@@ -84,6 +85,16 @@ module SteamHldsLogParser
84
85
  player, player_team, message = data.match(/: "(.+)<\d+><.+><([A-Z]+)>" say_team "(.+)"/i).captures
85
86
  content = { :type => 'team_chat', :params => { :player => player, :player_team => get_short_team_name(player_team), :chat => message } }
86
87
 
88
+ # L 05/10/2000 - 12:34:56: "Player<73><STEAM_ID_LAN><>" connected, address "192.168.4.186:1339"
89
+ elsif @options[:display_connect] && data.gsub(/: "(.+)<\d+><.+>" connected, address "(.+):(.+)"/).count > 0
90
+ player, ip, port = data.match(/: "(.+)<\d+><.+>" connected, address "(.+):(.+)"/i).captures
91
+ content = { :type => 'connect', :params => { :player => player, :ip => ip, :port => port } }
92
+
93
+ # L 05/10/2000 - 12:34:56: "Player<73><STEAM_ID_LAN><TERRORIST>" disconnected
94
+ elsif @options[:display_disconnect] && data.gsub(/: "(.+)<\d+><.+><(.+)>" disconnected/).count > 0
95
+ player, player_team = data.match(/: "(.+)<\d+><.+><(.+)>" disconnected/i).captures
96
+ content = { :type => 'disconnect', :params => { :player => player, :player_team => get_short_team_name(player_team) } }
97
+
87
98
  end
88
99
 
89
100
  # no matching pattern, no output
@@ -1,4 +1,4 @@
1
1
  module SteamHldsLogParser
2
2
  # Gem Version
3
- VERSION = "0.5.0"
3
+ VERSION = "0.5.1"
4
4
  end
data/spec/client_spec.rb CHANGED
@@ -6,102 +6,120 @@ module SteamHldsLogParser
6
6
 
7
7
  describe "Client" do
8
8
 
9
- context "when parameters are missing" do
9
+ context "when 'Displayer' parameter is missing" do
10
10
  it "raises an exception" do
11
11
  expect { Client.new }.to raise_error(ArgumentError)
12
12
  end
13
13
  end
14
14
 
15
- subject(:default_client) { Client.new(RSpecDisplayer) }
16
- context "when a 'Client' is created with default options"
17
- it { should be_an_instance_of Client }
18
- it "has a 'displayer'" do
19
- expect(default_client.displayer).not_to be_nil
20
- expect(default_client.displayer.class).to be(Class)
21
- expect(default_client.displayer).to be(RSpecDisplayer)
22
- end
23
- it "has a default 'options' Hash" do
24
- expect(default_client.displayer).not_to be_nil
25
- expect(default_client.displayer.class).to be(Class)
26
- end
27
- it "has a default 'host'" do
28
- expect(default_client.options[:host]).not_to be_nil
29
- expect(default_client.options[:host]).to eq("0.0.0.0")
30
- end
31
- it "has a default 'port'" do
32
- expect(default_client.options[:port]).not_to be_nil
33
- expect(default_client.options[:port]).to be(27115)
34
- end
35
- it "has a default 'locale'" do
36
- expect(default_client.options[:locale]).not_to be_nil
37
- expect(default_client.options[:locale].class).to be(Symbol)
38
- expect(default_client.options[:locale]).to be(:en)
39
- end
40
- it "has a default 'display_kills'" do
41
- expect(default_client.options[:display_kills]).not_to be_nil
42
- expect(default_client.options[:display_kills]).to be_true
43
- end
44
- it "has a default 'display_actions'" do
45
- expect(default_client.options[:display_actions]).not_to be_nil
46
- expect(default_client.options[:display_actions]).to be_true
47
- end
48
- it "has a default 'display_changelevel'" do
49
- expect(default_client.options[:display_changelevel]).not_to be_nil
50
- expect(default_client.options[:display_changelevel]).to be_true
51
- end
52
- it "has a default 'display_chat'" do
53
- expect(default_client.options[:display_chat]).not_to be_nil
54
- expect(default_client.options[:display_chat]).to be_true
55
- end
56
- it "has a default 'display_team_chat'" do
57
- expect(default_client.options[:display_team_chat]).not_to be_nil
58
- expect(default_client.options[:display_team_chat]).to be_true
59
- end
15
+ context "when 'Displayer' parameter is set" do
16
+ subject(:default_client) { Client.new(RSpecDisplayer) }
17
+ it { should be_an_instance_of Client }
18
+ it "has a 'displayer'" do
19
+ expect(default_client.displayer).not_to be_nil
20
+ expect(default_client.displayer.class).to be(Class)
21
+ expect(default_client.displayer).to be(RSpecDisplayer)
22
+ end
23
+ it "has a default 'options' Hash" do
24
+ expect(default_client.displayer).not_to be_nil
25
+ expect(default_client.displayer.class).to be(Class)
26
+ end
27
+ it "has a default 'host'" do
28
+ expect(default_client.options[:host]).not_to be_nil
29
+ expect(default_client.options[:host]).to eq("0.0.0.0")
30
+ end
31
+ it "has a default 'port'" do
32
+ expect(default_client.options[:port]).not_to be_nil
33
+ expect(default_client.options[:port]).to be(27115)
34
+ end
35
+ it "has a default 'locale'" do
36
+ expect(default_client.options[:locale]).not_to be_nil
37
+ expect(default_client.options[:locale].class).to be(Symbol)
38
+ expect(default_client.options[:locale]).to be(:en)
39
+ end
40
+ it "has a default 'display_kills'" do
41
+ expect(default_client.options[:display_kills]).not_to be_nil
42
+ expect(default_client.options[:display_kills]).to be_true
43
+ end
44
+ it "has a default 'display_actions'" do
45
+ expect(default_client.options[:display_actions]).not_to be_nil
46
+ expect(default_client.options[:display_actions]).to be_true
47
+ end
48
+ it "has a default 'display_changelevel'" do
49
+ expect(default_client.options[:display_changelevel]).not_to be_nil
50
+ expect(default_client.options[:display_changelevel]).to be_true
51
+ end
52
+ it "has a default 'display_chat'" do
53
+ expect(default_client.options[:display_chat]).not_to be_nil
54
+ expect(default_client.options[:display_chat]).to be_true
55
+ end
56
+ it "has a default 'display_team_chat'" do
57
+ expect(default_client.options[:display_team_chat]).not_to be_nil
58
+ expect(default_client.options[:display_team_chat]).to be_true
59
+ end
60
+ it "has a default 'display_connect'" do
61
+ expect(default_client.options[:display_connect]).not_to be_nil
62
+ expect(default_client.options[:display_connect]).to be_true
63
+ end
64
+ it "has a default 'display_disconnect'" do
65
+ expect(default_client.options[:display_connect]).not_to be_nil
66
+ expect(default_client.options[:display_connect]).to be_true
67
+ end
68
+ end
60
69
 
61
- subject(:custom_client) { Client.new(RSpecDisplayer, custom_options) }
62
- context "when custom parameters are given"
63
- it { should be_an_instance_of Client }
64
- it "has a default 'options' Hash" do
65
- expect(custom_client.options).not_to be_nil
66
- expect(custom_client.options.class).to be(Hash)
67
- end
68
- it "has a custom 'host'" do
69
- expect(custom_client.options[:host]).not_to be_nil
70
- expect(custom_client.options[:host]).to eq("127.0.0.1")
71
- end
72
- it "has a custom 'port'" do
73
- expect(custom_client.options[:port]).not_to be_nil
74
- expect(custom_client.options[:port]).to be(12345)
75
- end
76
- it "has a custom 'locale'" do
77
- expect(custom_client.options[:locale]).not_to be_nil
78
- expect(custom_client.options[:locale].class).to be(Symbol)
79
- expect(custom_client.options[:locale]).to be(:fr)
80
- end
81
- it "has a custom 'display_kills'" do
82
- expect(custom_client.options[:display_kills]).not_to be_nil
83
- expect(custom_client.options[:display_kills]).to be_false
84
- end
85
- it "has a custom 'display_actions'" do
86
- expect(custom_client.options[:display_actions]).not_to be_nil
87
- expect(custom_client.options[:display_actions]).to be_false
88
- end
89
- it "has a custom 'display_changelevel'" do
90
- expect(custom_client.options[:display_changelevel]).not_to be_nil
91
- expect(custom_client.options[:display_changelevel]).to be_false
92
- end
93
- it "has a custom 'display_chat'" do
94
- expect(custom_client.options[:display_chat]).not_to be_nil
95
- expect(custom_client.options[:display_chat]).to be_false
96
- end
97
- it "has a custom 'display_team_chat'" do
98
- expect(custom_client.options[:display_team_chat]).not_to be_nil
99
- expect(custom_client.options[:display_team_chat]).to be_false
70
+ context "when 'Displayer' parameter is set with custom options" do
71
+ subject(:custom_client) { Client.new(RSpecDisplayer, custom_options) }
72
+ it { should be_an_instance_of Client }
73
+ it "has a default 'options' Hash" do
74
+ expect(custom_client.options).not_to be_nil
75
+ expect(custom_client.options.class).to be(Hash)
76
+ end
77
+ it "has a custom 'host'" do
78
+ expect(custom_client.options[:host]).not_to be_nil
79
+ expect(custom_client.options[:host]).to eq("127.0.0.1")
80
+ end
81
+ it "has a custom 'port'" do
82
+ expect(custom_client.options[:port]).not_to be_nil
83
+ expect(custom_client.options[:port]).to be(12345)
84
+ end
85
+ it "has a custom 'locale'" do
86
+ expect(custom_client.options[:locale]).not_to be_nil
87
+ expect(custom_client.options[:locale].class).to be(Symbol)
88
+ expect(custom_client.options[:locale]).to be(:fr)
89
+ end
90
+ it "has a custom 'display_kills'" do
91
+ expect(custom_client.options[:display_kills]).not_to be_nil
92
+ expect(custom_client.options[:display_kills]).to be_false
93
+ end
94
+ it "has a custom 'display_actions'" do
95
+ expect(custom_client.options[:display_actions]).not_to be_nil
96
+ expect(custom_client.options[:display_actions]).to be_false
97
+ end
98
+ it "has a custom 'display_changelevel'" do
99
+ expect(custom_client.options[:display_changelevel]).not_to be_nil
100
+ expect(custom_client.options[:display_changelevel]).to be_false
101
+ end
102
+ it "has a custom 'display_chat'" do
103
+ expect(custom_client.options[:display_chat]).not_to be_nil
104
+ expect(custom_client.options[:display_chat]).to be_false
105
+ end
106
+ it "has a custom 'display_team_chat'" do
107
+ expect(custom_client.options[:display_team_chat]).not_to be_nil
108
+ expect(custom_client.options[:display_team_chat]).to be_false
109
+ end
110
+ it "has a custom 'display_connect'" do
111
+ expect(custom_client.options[:display_connect]).not_to be_nil
112
+ expect(custom_client.options[:display_connect]).to be_false
113
+ end
114
+ it "has a custom 'display_disconnect'" do
115
+ expect(custom_client.options[:display_disconnect]).not_to be_nil
116
+ expect(custom_client.options[:display_disconnect]).to be_false
117
+ end
100
118
  end
101
119
 
102
120
  describe "#start and #stop" do
121
+ subject(:default_client) { Client.new(RSpecDisplayer) }
103
122
 
104
- context "when 'start' and 'stop' are triggered one after the other"
105
123
  it "starts then stops an eventmachine with appropriate messages" do
106
124
  EM.run {
107
125
  expect(capture_stdout { default_client.start }).to eq("## 0.0.0.0:27115 => HLDS connected and sending data\n")
@@ -19,14 +19,14 @@ module SteamHldsLogParser
19
19
 
20
20
  context "when 'data' is given" do
21
21
 
22
- it "creates a 'Displayer'" do
23
- expect(@displayer).to be_an_instance_of Displayer
24
- end
22
+ subject { @displayer }
23
+ it { should be_an_instance_of Displayer }
25
24
 
26
25
  describe "#get_data" do
26
+ subject { @displayer.get_data }
27
27
  it "returns 'data' given as argument" do
28
- expect(@displayer.get_data).not_to be_nil
29
- expect(@displayer.get_data).to be(@data)
28
+ should_not be_nil
29
+ should be(@data)
30
30
  end
31
31
  end
32
32
 
data/spec/handler_spec.rb CHANGED
@@ -57,7 +57,6 @@ module SteamHldsLogParser
57
57
  it "returns Hash on map_ends" do
58
58
  data = '# L 05/10/2000 - 12:34:56: Team "CT" scored "17" with "0" players"'
59
59
  expected = {:type=>"map_ends", :params=>{:winner=>"CT", :score=>"17"}}
60
- puts @handler.receive_data(data)
61
60
  expect(@handler.receive_data(data).class).to be(RSpecDisplayer)
62
61
  expect(@handler.receive_data(data).data).to eq(expected)
63
62
  expect(@handler.receive_data(data).data.class).to be(Hash)
@@ -164,6 +163,26 @@ module SteamHldsLogParser
164
163
  end
165
164
  end
166
165
 
166
+ context "when data is 'connect'" do
167
+ it "returns Hash when a user connects the server" do
168
+ data = '# L 05/10/2000 - 12:34:56: "Player<73><STEAM_ID_LAN><>" connected, address "192.168.4.186:1339"'
169
+ expected = {:type=>"connect", :params=>{:player=>"Player", :ip=>"192.168.4.186", :port=>"1339"}}
170
+ expect(@handler.receive_data(data).class).to be(RSpecDisplayer)
171
+ expect(@handler.receive_data(data).data).to eq(expected)
172
+ expect(@handler.receive_data(data).data.class).to be(Hash)
173
+ end
174
+ end
175
+
176
+ context "when data is 'disconnect'" do
177
+ it "returns Hash when a user disconnects" do
178
+ data = '# L 05/10/2000 - 12:34:56: "Player<73><STEAM_ID_LAN><TERRORIST>" disconnected'
179
+ expected = {:type=>"disconnect", :params=>{:player=>"Player", :player_team=>"T"}}
180
+ expect(@handler.receive_data(data).class).to be(RSpecDisplayer)
181
+ expect(@handler.receive_data(data).data).to eq(expected)
182
+ expect(@handler.receive_data(data).data.class).to be(Hash)
183
+ end
184
+ end
185
+
167
186
  subject { @custom_handler }
168
187
  context "when 'displayer' is set" do
169
188
  it "returns Hash on changelevel provided by 'displayer'" do
data/spec/helper_spec.rb CHANGED
@@ -2,6 +2,12 @@ require "simplecov"
2
2
  require "coveralls"
3
3
  require "rspec"
4
4
 
5
+ RSpec.configure do |config|
6
+ config.expect_with :rspec do |c|
7
+ c.syntax = :expect
8
+ end
9
+ end
10
+
5
11
  # Simplecov / Coverall configuration
6
12
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
13
  SimpleCov::Formatter::HTMLFormatter,
@@ -45,6 +51,8 @@ def custom_options
45
51
  :display_changelevel => false,
46
52
  :display_chat => false,
47
53
  :display_team_chat => false,
54
+ :display_connect => false,
55
+ :display_disconnect => false,
48
56
  :displayer => RSpecDisplayer
49
57
  }
50
58
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steam_hlds_log_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas VIAL
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2013-08-26 00:00:00 Z
12
+ date: 2013-10-01 00:00:00 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler