steam_hlds_log_parser 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA512:
3
- data.tar.gz: 21f9f688aa94ffa40bddb17b43e0b2ae7774bec09d42ebbb00524ff1acaf70350ed703ae1eb59a3fdc52c2c9bd7d1c7a129d0bb2157f380528cb022e149124cb
4
- metadata.gz: ec172491894a4a85647baf437dffff1a660f55a160c3e35b01b44b602b48a6497bbdd9ace675b52d22e08d5ccb2026417650011a40913bb5bd9319f41f40e826
3
+ metadata.gz: d2bd1ead06fc2e944fe5444330d664cdf1b7417163c9f62c4e9a40f86bd5ace016a660d5bb4b7f7f7ddeaae175af51e4c140721dc24c6d6f44f8d856cf0dd05d
4
+ data.tar.gz: f1d9c090409ddca6135103ddaea5c8c4275bd385e7dd67e79bedec33b3da262df42a09080a505cf21d9ce872915b7d8322bce522c258414ce3fee53c7c48c430
5
5
  SHA1:
6
- data.tar.gz: 8b03a0b37424792c0f6698bdd2127b7dac379f36
7
- metadata.gz: 3225c8d1342cbe90341bad78fe81404d87be864b
6
+ metadata.gz: dea6da3483d539c6275bb19b4814913eb8674f84
7
+ data.tar.gz: d76a18c57ee1aadd6193dcec1ac66a48776683a7
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
- # Steam Hlds Log Parser
1
+ # Steam HLDS Log Parser
2
2
 
3
- Steam Hlds Log Parser listens to UDP log packets sent by your (local or remote) HLDS game server, processes data and returns clean or/and translated and readable content that you can use for your website, irc channel, match live streaming, bots, database...
3
+ ##### Log parser for Steam HLDS based games like Counter-Strike
4
+
5
+ Steam Hlds Log Parser listens to UDP log packets sent by your _(local or remote)_ HLDS game server, processes data and returns clean and readable (translated) content that you can use for your website, irc channel, match live streaming, bots, database...
4
6
 
5
7
  Should work with all Steam HLDS based games, and has been mostly tested on Counter-Strike 1.6.
6
8
 
@@ -26,41 +28,73 @@ Or install it yourself as:
26
28
 
27
29
  $ gem install steam_hlds_log_parser
28
30
 
29
- ## Configuration
31
+ And in your Ruby file:
32
+
33
+ require "steam_hlds_log_parser"
30
34
 
31
- 1. Create your own displayer callback `class` which will receive parsed data
32
- Ask this `class` to write a file, send content to IRC or flowdock... whatever... and give it as `:displayer` Hash option
33
- 2. Create a new client on desired IP / Port / Options
34
- 3. Of course, you need to have server RCON. In your `server.cfg` (or in server console) add `logaddress 127.0.0.1 27035`. It specifies where the logs will be sent. This must be the IP / Port your ruby client will listen to.
35
+ ## Full working example
35
36
 
36
- If you are behind a router/firewall, you probably need to configure it.
37
+ By default, Steam HLDS Log Parser runs on `0.0.0.0:27115` _(+100 than default HLDS port which is 27015)_
37
38
 
38
- ## Example
39
+ 1 - On your game server, send logs to your Ruby server (in this example, same machine).
39
40
 
40
- require "rubygems"
41
- require "steam_hlds_log_parser"
41
+ ```
42
+ logaddres 0.0.0.0 27115
43
+ ```
44
+
45
+ or
46
+
47
+ ```
48
+ logaddres_add 0.0.0.0 27115
49
+ ```
50
+
51
+ 2 - Create a file named, for example, `hlds_parser.rb` with this content:
52
+
53
+ ```ruby
54
+ require "rubygems"
55
+ require "steam_hlds_log_parser"
42
56
 
43
- class Formatter
44
- def initialize(data)
45
- # will 'puts' the translated content using built-in displayer
46
- SteamHldsLogParser::Displayer.new(data).display_translation
47
- end
48
- end
57
+ # Your displayer Class is what you will do with your data
58
+ class Formatter
59
+ def initialize(data)
60
+ # will 'puts' the translated content, using built-in Displayer
61
+ SteamHldsLogParser::Displayer.new(data).display_translation
62
+ end
63
+ end
49
64
 
65
+ # Setup the Client to use the 'Formatter' Class as displayer callback
66
+ # Options will be use default values (see example-2.rb)
67
+ SteamHldsLogParser::Client.new(Formatter).start
68
+ ```
50
69
 
51
- ## These are default options
52
- options = {
53
- :locale => :en,
54
- :display_kills => true,
55
- :display_actions => true,
56
- :display_changelevel => true,
57
- :display_chat => true,
58
- :display_team_chat => true,
59
- :displayer => Formatter
60
- }
70
+ 3 - Now, run the Ruby script to see parsed content inyour console:
61
71
 
62
- parser = SteamHldsLogParser::Client.new("127.0.0.1", 27035, options)
63
- parser.start
72
+ ```
73
+ ruby hlds_parser.rb
74
+ ```
75
+
76
+ Your game server activity should look something like that:
77
+
78
+ ```
79
+ [T] Jim_Carrey spawned with the bomb
80
+ [CT] Tomav says "Com'on guys!"
81
+ [CT] V0id killed [T] killaruna with deagle
82
+ [T] Funky Byte killed [CT] Neuromancer with m4a1
83
+ [CT] Tomav killed [T] Funky Byte with deagle
84
+ [T] Juliet_Lewis killed [CT] Make my Day with ak47
85
+ [CT] Alloc killed [T] Juliet_Lewis with famas
86
+ [T] Jim_Carrey planted the bomb
87
+ [CT] Tomav killed [T] Jim_Carrey with sg552
88
+ [CT] Tomav begin bomb defuse with kit
89
+ [CT] Jim_Carrey says "aaaaaargh!!!" to others [T]
90
+ [CT] Tomav defused the bomb
91
+ [CT] 1 - 6 [T]
92
+ Map ends: CT => 1
93
+ Map ends: T => 6
94
+ Loading de_dust2
95
+ ```
96
+
97
+ Now customize your Formatter class to make it fit your needs.
64
98
 
65
99
  ## Documentation
66
100
 
@@ -73,6 +107,21 @@ Full documentation can be found on [Steam HLDS Parser Log page on Rubydoc](http:
73
107
  Steam HLDS Log Parser uses RSpec as test / specification framework and should be 100% tested too.
74
108
  Here again, feel free to improve it.
75
109
 
110
+ ## FAQ
111
+
112
+ ### What do I need to use this gem?
113
+
114
+ * Ruby 1.9+
115
+ * Basic Ruby skill
116
+ * Steam HLDS Server with SSH access or RCON password
117
+
118
+ ### My Client is running, but nothing appears in my console?!
119
+ Common issues are:
120
+
121
+ * HLDS with no or miconfigured `logaddress`
122
+ * Firewall not properly configured (remember that HLDS sends `UDP` packets, not `TCP`)
123
+ * Have a look to your Displayer Class
124
+
76
125
  ## Contributing
77
126
 
78
127
  1. Fork it
@@ -1,24 +1,14 @@
1
1
  require "rubygems"
2
2
  require "steam_hlds_log_parser"
3
3
 
4
+ # Your displayer Class is what you will do with your data
4
5
  class Formatter
5
6
  def initialize(data)
6
- # will 'puts' the translated content
7
+ # will 'puts' the translated content, using built-in Displayer
7
8
  SteamHldsLogParser::Displayer.new(data).display_translation
8
9
  end
9
10
  end
10
11
 
11
-
12
- ## These are default options
13
- options = {
14
- :locale => :en,
15
- :display_kills => true,
16
- :display_actions => true,
17
- :display_changelevel => true,
18
- :display_chat => true,
19
- :display_team_chat => true,
20
- :displayer => Formatter
21
- }
22
-
23
- parser = SteamHldsLogParser::Client.new("127.0.0.1", 27035, options)
24
- parser.start
12
+ # Setup the Client to use the 'Formatter' Class
13
+ # Options will be use default values (see example-2.rb)
14
+ SteamHldsLogParser::Client.new(Formatter).start
@@ -1,26 +1,25 @@
1
1
  require "rubygems"
2
2
  require "steam_hlds_log_parser"
3
- # require "flowdock"
4
3
 
5
- ## The displayer class that will be used to send content to Flowdock
6
- class FlowdockPusher
4
+ # Your displayer Class is what you will do with your data
5
+ class Formatter
7
6
  def initialize(data)
8
- # Get translated data
9
- content = SteamHldsLogParser::Displayer.new(data).get_translation
10
- # Source: https://github.com/flowdock/flowdock-api
11
- flow = Flowdock::Flow.new(:api_token => "12345678901234567890123456789012", :external_user_name => "HLDS-Live")
12
- flow.push_to_chat(:content => content)
7
+ # will 'puts' the translated content, using built-in Displayer
8
+ SteamHldsLogParser::Displayer.new(data).display_translation
13
9
  end
14
10
  end
15
11
 
12
+ # These are default options
16
13
  options = {
17
- :locale => :fr,
18
- :display_kills => true,
19
- :display_actions => true,
20
- :display_changelevel => true,
21
- :display_chat => true,
22
- :display_team_chat => true,
23
- :displayer => FlowdockPusher
14
+ :host => "0.0.0.0",
15
+ :port => 27115,
16
+ :locale => :en,
17
+ :display_kills => true,
18
+ :display_actions => true,
19
+ :display_changelevel => true,
20
+ :display_chat => true,
21
+ :display_team_chat => true
24
22
  }
25
23
 
26
- SteamHldsLogParser::Client.new("127.0.0.1", 27035, options).start
24
+ parser = SteamHldsLogParser::Client.new(Formatter, options)
25
+ parser.start
@@ -2,37 +2,37 @@ module SteamHldsLogParser
2
2
 
3
3
  # Listens to HLDS logs received via UDP on configured port
4
4
  #
5
- # @attr_reader [String] host Client host / IP
6
- # @attr_reader [Integer] port Client port to listen to
7
5
  # @attr_reader [Hash] options Client options
6
+ #
8
7
  class Client
9
8
 
10
- attr_reader :host, :port, :options
9
+ attr_reader :displayer, :options
11
10
 
12
11
  # Creates a new client
13
12
  #
14
- # @param [String] host Hostname / IP Address the server will be running
15
- # @param [Integer] port Port will be listening to
16
- # @param [Hash] options Other configuration options
13
+ # @param [Class] displayer Callback class which will receive parsed content, do what you want with this class
14
+ # @param [Hash] options Optional parameters to setup your client
17
15
  #
16
+ # @option options [String] :host (0.0.0.0) IP Address the client will be running, usually localhost
17
+ # @option options [Integer] :port (27115) Port will be listening to
18
18
  # @option options [Symbol] :locale (:en) Set the language of returned content
19
19
  # @option options [Boolean] :display_kills (true) Enable kills / frags detail
20
20
  # @option options [Boolean] :display_actions (true) Enable players actions / defuse / ... detail
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 [Class] :displayer Class that will be use to display content
25
24
  #
26
- def initialize(host, port, options = {})
25
+ def initialize(displayer, options = {})
27
26
  default_options = {
28
- :locale => :en,
29
- :display_kills => true,
30
- :display_actions => true,
31
- :display_changelevel => true,
32
- :display_chat => true,
33
- :display_team_chat => true,
27
+ :host => "0.0.0.0",
28
+ :port => 27115,
29
+ :locale => :en,
30
+ :display_kills => true,
31
+ :display_actions => true,
32
+ :display_changelevel => true,
33
+ :display_chat => true,
34
+ :display_team_chat => true,
34
35
  }
35
- @host, @port = host, port
36
36
  @options = default_options.merge(options)
37
37
  end
38
38
 
@@ -45,13 +45,13 @@ module SteamHldsLogParser
45
45
  Signal.trap("INT") { EM.stop }
46
46
  Signal.trap("TERM") { EM.stop }
47
47
  # Let's start
48
- EM::open_datagram_socket(@host, @port, Handler, @host, @port, @options)
48
+ EM::open_datagram_socket(@options[:host], @options[:port], Handler, @displayer, @options)
49
49
  }
50
50
  end
51
51
 
52
52
  # Stops the client
53
53
  def stop
54
- puts "## #{@host}:#{@port} => #{I18n.t('client_stop')}"
54
+ puts "## #{@options[:host]}:#{@options[:port]} => #{I18n.t('client_stop')}"
55
55
  EM::stop_event_loop
56
56
  end
57
57
 
@@ -2,31 +2,31 @@ module SteamHldsLogParser
2
2
 
3
3
  # Process data received by 'Client'
4
4
  #
5
- # @attr_reader [String] host Client host / IP
6
- # @attr_reader [Integer] port Client port to listen to
5
+ # @attr_reader [Class] displayer Callback
7
6
  # @attr_reader [Hash] options Client options
7
+ #
8
8
  class Handler < EM::Connection
9
9
 
10
- attr_reader :host, :port, :options
10
+ attr_reader :displayer, :options
11
11
 
12
12
  # Initialize Handler from Client options
13
13
  #
14
- # @param [String] host Hostname / IP Address the server is running
15
- # @param [Integer] port Port is listening to
16
- # @param [Hash] options Other client configuration options
14
+ # @param [Class] displayer Class to call when data is parsed
15
+ # @param [Hash] options Client configuration options
17
16
  #
18
- def initialize(host, port, options)
19
- @host, @port, @options = host, port, options
17
+ def initialize(displayer, options)
18
+ @displayer = displayer
19
+ @options = options
20
20
  end
21
21
 
22
22
  # Triggered when HLDS connects
23
23
  def post_init
24
- puts "## #{@host}:#{@port} => #{I18n.t('client_connect')}"
24
+ puts "## #{@options[:host]}:#{@options[:port]} => #{I18n.t('client_connect')}"
25
25
  end
26
26
 
27
27
  # Triggered when HLDS disconnects
28
28
  def unbind
29
- puts "## #{@host}:#{@port} => #{I18n.t('client_disconnect')}"
29
+ puts "## #{@options[:host]}:#{@options[:port]} => #{I18n.t('client_disconnect')}"
30
30
  end
31
31
 
32
32
  # Get data from Client and parse using Regexp
@@ -37,6 +37,8 @@ module SteamHldsLogParser
37
37
  # * match suicides
38
38
  # * match who did what (defuse, drop the bomb...)
39
39
  # * match changelevel
40
+ # * match chat (say)
41
+ # * match team chat (say_team)
40
42
  #
41
43
  # @param [String] data Data received by Client from HLDS server (a line of log)
42
44
  #
@@ -86,10 +88,10 @@ module SteamHldsLogParser
86
88
 
87
89
  # no matching pattern, no output
88
90
  unless content.nil?
89
- if @options[:displayer].nil?
91
+ if @displayer.nil?
90
92
  return(content)
91
93
  else
92
- @options[:displayer].new(content)
94
+ @displayer.new(content)
93
95
  end
94
96
  end
95
97
 
@@ -105,8 +107,9 @@ module SteamHldsLogParser
105
107
  case winner
106
108
  when "T"
107
109
  return "#{I18n.t('full_team_name_te')}"
108
- else
110
+ when "CT"
109
111
  return "#{I18n.t('full_team_name_ct')}"
112
+ else
110
113
  end
111
114
  end
112
115
 
@@ -120,8 +123,9 @@ module SteamHldsLogParser
120
123
  case team
121
124
  when "TERRORIST"
122
125
  return "#{I18n.t('short_team_name_te')}"
123
- else
126
+ when "CT"
124
127
  return "#{I18n.t('short_team_name_ct')}"
128
+ else
125
129
  end
126
130
  end
127
131
 
@@ -1,4 +1,4 @@
1
1
  module SteamHldsLogParser
2
2
  # Gem Version
3
- VERSION = "0.4.6"
3
+ VERSION = "0.4.7"
4
4
  end
data/spec/client_spec.rb CHANGED
@@ -4,48 +4,96 @@ module SteamHldsLogParser
4
4
 
5
5
  describe "SteamHldsLogParser" do
6
6
 
7
- before :all do
8
- @client = Client.new("0.0.0.0", 27035)
9
- @options = @client.options
10
- @custom_options = custom_options
11
- @custom_client = Client.new("127.0.0.1", 27045, @custom_options)
12
- end
13
-
14
7
  describe "Client" do
15
8
 
16
- it "raises an exception when parameters are missing" do
17
- expect { Client.new }.to raise_error(ArgumentError)
9
+ context "when parameters are missing" do
10
+ it "raises an exception" do
11
+ expect { Client.new }.to raise_error(ArgumentError)
12
+ end
18
13
  end
19
14
 
20
- subject { @client }
21
- context "when a 'Client' is created without options"
15
+ subject(:default_client) { Client.new(RSpecDisplayer) }
16
+ context "when a 'Client' is created with default options"
22
17
  it { should be_an_instance_of Client }
23
- it "has a 'host'" do
24
- @client.host.should_not be_nil
25
- @client.host.should eq("0.0.0.0")
18
+ it "has a default 'options' Hash" do
19
+ default_client.options.should_not be_nil
20
+ default_client.options.should_not be(nil)
21
+ default_client.options.class.should be(Hash)
26
22
  end
27
- it "has a 'port'" do
28
- @client.port.should_not be_nil
29
- @client.port.should eq(27035)
23
+ it "has a default 'host'" do
24
+ default_client.options[:host].should_not be_nil
25
+ default_client.options[:host].should eq("0.0.0.0")
30
26
  end
31
- it "has a default 'options' Hash" do
32
- @client.options.should_not be_nil
33
- @client.options.should_not be(nil)
34
- @client.options.class.should be(Hash)
35
- @client.options.should eq(@options)
27
+ it "has a default 'port'" do
28
+ default_client.options[:port].should_not be_nil
29
+ default_client.options[:port].should eq(27115)
30
+ end
31
+ it "has a default 'locale'" do
32
+ default_client.options[:locale].should_not be_nil
33
+ default_client.options[:locale].class.should eq(Symbol)
34
+ default_client.options[:locale].should eq(:en)
35
+ end
36
+ it "has a default 'display_kills'" do
37
+ default_client.options[:display_kills].should_not be_nil
38
+ default_client.options[:display_kills].should be(true)
39
+ end
40
+ it "has a default 'display_actions'" do
41
+ default_client.options[:display_actions].should_not be_nil
42
+ default_client.options[:display_actions].should be(true)
43
+ end
44
+ it "has a default 'display_changelevel'" do
45
+ default_client.options[:display_changelevel].should_not be_nil
46
+ default_client.options[:display_changelevel].should be(true)
47
+ end
48
+ it "has a default 'display_chat'" do
49
+ default_client.options[:display_chat].should_not be_nil
50
+ default_client.options[:display_chat].should be(true)
51
+ end
52
+ it "has a default 'display_team_chat'" do
53
+ default_client.options[:display_team_chat].should_not be_nil
54
+ default_client.options[:display_team_chat].should be(true)
36
55
  end
37
56
 
38
- subject(:custom_client) { @custom_client }
39
- context "when custom options are given"
40
- it "can get a custom 'options' Hash" do
41
- @custom_client.options.should_not be_nil
42
- @custom_client.options.class.should be(Hash)
43
- @custom_client.options.should eq(@custom_options)
44
- @custom_client.options[:displayer].should eq(RSpecDisplayer)
45
- @custom_client.options[:locale].should be(:fr)
46
- @custom_client.options[:display_kills].should be(false)
47
- @custom_client.options[:display_actions].should be(false)
48
- @custom_client.options[:display_changelevel].should be(true)
57
+ subject(:custom_client) { Client.new(RSpecDisplayer, custom_options) }
58
+ context "when custom parameters are given"
59
+ it { should be_an_instance_of Client }
60
+ it "has a default 'options' Hash" do
61
+ custom_client.options.should_not be_nil
62
+ custom_client.options.should_not be(nil)
63
+ custom_client.options.class.should be(Hash)
64
+ end
65
+ it "has a custom 'host'" do
66
+ custom_client.options[:host].should_not be_nil
67
+ custom_client.options[:host].should eq("127.0.0.1")
68
+ end
69
+ it "has a custom 'port'" do
70
+ custom_client.options[:port].should_not be_nil
71
+ custom_client.options[:port].should eq(12345)
72
+ end
73
+ it "has a custom 'locale'" do
74
+ custom_client.options[:locale].should_not be_nil
75
+ custom_client.options[:locale].class.should eq(Symbol)
76
+ custom_client.options[:locale].should eq(:fr)
77
+ end
78
+ it "has a custom 'display_kills'" do
79
+ custom_client.options[:display_kills].should_not be_nil
80
+ custom_client.options[:display_kills].should be(false)
81
+ end
82
+ it "has a custom 'display_actions'" do
83
+ custom_client.options[:display_actions].should_not be_nil
84
+ custom_client.options[:display_actions].should be(false)
85
+ end
86
+ it "has a custom 'display_changelevel'" do
87
+ custom_client.options[:display_changelevel].should_not be_nil
88
+ custom_client.options[:display_changelevel].should be(false)
89
+ end
90
+ it "has a custom 'display_chat'" do
91
+ custom_client.options[:display_chat].should_not be_nil
92
+ custom_client.options[:display_chat].should be(false)
93
+ end
94
+ it "has a custom 'display_team_chat'" do
95
+ custom_client.options[:display_team_chat].should_not be_nil
96
+ custom_client.options[:display_team_chat].should be(false)
49
97
  end
50
98
 
51
99
  describe "#start and #stop" do
@@ -53,9 +101,9 @@ module SteamHldsLogParser
53
101
  context "when 'start' and 'stop' are triggered one after the other"
54
102
  it "starts then stops an eventmachine with appropriate messages" do
55
103
  EM.run {
56
- capture_stdout { @client.start }.should eq("## 0.0.0.0:27035 => HLDS connected and sending data\n")
104
+ capture_stdout { default_client.start }.should eq("## 0.0.0.0:27115 => HLDS connected and sending data\n")
57
105
  EM.add_timer(0.2) {
58
- capture_stdout { @client.stop }.should eq("## 0.0.0.0:27035 => HLDS Log Parser stopped.\n")
106
+ capture_stdout { default_client.stop }.should eq("## 0.0.0.0:27115 => HLDS Log Parser stopped.\n")
59
107
  }
60
108
  }
61
109
  end
data/spec/handler_spec.rb CHANGED
@@ -5,10 +5,9 @@ module SteamHldsLogParser
5
5
  describe "SteamHldsLogParser" do
6
6
 
7
7
  before :all do
8
- @client = Client.new("0.0.0.0", 27035)
9
- @options = @client.options
10
- @handler = Handler.new("", "0.0.0.0", 27035, @options)
11
- @custom_handler = Handler.new("", "0.0.0.0", 27035, custom_options)
8
+ @client = Client.new(RSpecDisplayer)
9
+ @handler = Handler.new("", @client.displayer, @client.options)
10
+ @custom_handler = Handler.new("", RSpecDisplayer, { :host => "0.0.0.0", :port => 27115, :display_changelevel => true })
12
11
  end
13
12
 
14
13
  describe "Handler" do
@@ -24,24 +23,24 @@ module SteamHldsLogParser
24
23
 
25
24
  context "when 'host' and 'port' are given"
26
25
  it { should be_an_instance_of Handler }
27
- it "has a 'host'" do
28
- @handler.host.should_not be_nil
29
- @handler.host.should eq("0.0.0.0")
26
+ it "has a 'host' option" do
27
+ @handler.options[:host].should_not be_nil
28
+ @handler.options[:host].should eq("0.0.0.0")
30
29
  end
31
- it "has a 'port'" do
32
- @handler.port.should_not be_nil
33
- @handler.port.should eq(27035)
30
+ it "has a 'port' option" do
31
+ @handler.options[:port].should_not be_nil
32
+ @handler.options[:port].should eq(27115)
34
33
  end
35
34
 
36
35
  describe "#post_init" do
37
36
  it "displays a console message when hlds connects" do
38
- capture_stdout { @handler.post_init }.should eq("## 0.0.0.0:27035 => HLDS connected and sending data\n")
37
+ capture_stdout { @handler.post_init }.should eq("## 0.0.0.0:27115 => HLDS connected and sending data\n")
39
38
  end
40
39
  end
41
40
 
42
41
  describe "#unbind" do
43
42
  it "displays a console message when hlds disconnects" do
44
- capture_stdout { @handler.unbind }.should eq("## 0.0.0.0:27035 => HLDS disconnected? No data is received.\n")
43
+ capture_stdout { @handler.unbind }.should eq("## 0.0.0.0:27115 => HLDS disconnected? No data is received.\n")
45
44
  end
46
45
  end
47
46
 
@@ -153,11 +152,13 @@ module SteamHldsLogParser
153
152
  end
154
153
  end
155
154
 
155
+ subject { @custom_handler }
156
156
  context "when 'displayer' is set" do
157
157
  it "returns Hash on changelevel provided by 'displayer'" do
158
158
  data = '# L 05/10/2000 - 12:34:56: Loading map "de_dust2"'
159
159
  expected = {:type=>"loading_map", :params=>{:map=>"de_dust2"}}
160
- @custom_handler.options[:displayer].should eq(RSpecDisplayer)
160
+ @custom_handler.displayer.should eq(RSpecDisplayer)
161
+ @custom_handler.options[:display_changelevel].should be(true)
161
162
  @custom_handler.receive_data(data).data.should eq(expected)
162
163
  end
163
164
  end
data/spec/helper_spec.rb CHANGED
@@ -37,12 +37,14 @@ require "steam_hlds_log_parser"
37
37
  # Returns custom options as a Hash
38
38
  def custom_options
39
39
  options = {
40
- :locale => :fr,
41
- :display_kills => false,
42
- :display_actions => false,
43
- :display_changelevel => true,
44
- :display_chat => false,
45
- :display_team_chat => false,
46
- :displayer => RSpecDisplayer
40
+ :host => "127.0.0.1",
41
+ :port => 12345,
42
+ :locale => :fr,
43
+ :display_kills => false,
44
+ :display_actions => false,
45
+ :display_changelevel => false,
46
+ :display_chat => false,
47
+ :display_team_chat => false,
48
+ :displayer => RSpecDisplayer
47
49
  }
48
50
  end
@@ -5,9 +5,8 @@ module SteamHldsLogParser
5
5
  describe "SteamHldsLogParser" do
6
6
 
7
7
  before :all do
8
- @client = Client.new("0.0.0.0", 27035)
9
- @options = @client.options
10
- @handler = Handler.new("", "0.0.0.0", 27035, @options)
8
+ @client = Client.new(RSpecDisplayer)
9
+ @handler = Handler.new("", @client.displayer, @client.options)
11
10
  end
12
11
 
13
12
  describe "LogTester" do
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.4.6
4
+ version: 0.4.7
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-15 00:00:00 Z
12
+ date: 2013-08-18 00:00:00 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler