ircparser 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ircparser.rb +2 -2
- data/lib/ircparser/message.rb +9 -9
- data/lib/ircparser/prefix.rb +54 -0
- data/test/test_message.rb +12 -12
- data/test/test_prefix.rb +60 -0
- metadata +4 -4
- data/lib/ircparser/source.rb +0 -79
- data/test/test_source.rb +0 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5beae91923832297ad9f4005057e85283b072981
|
4
|
+
data.tar.gz: 788844a68185df07bc39ab2106e7606dee8e43e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ed4efc1b2e78605eb68f8b0a8964995d69d861a124f8342d2a759ac037daa43904c1ab7ff50d3f5a39d2c482482f3a6cd653da8b1bedd4e094f9345e2b36bf5
|
7
|
+
data.tar.gz: d9c63829d0f9f462caedc2e285968b35096c3c8bb469c59dad73cb3536427da79e0e930d3d2fe722efaea77e27d30d8c6715b6d1290544fe4ed03096e895cc3c
|
data/lib/ircparser.rb
CHANGED
@@ -16,9 +16,9 @@
|
|
16
16
|
module IRCParser
|
17
17
|
|
18
18
|
# Public: The version of IRCParser in use.
|
19
|
-
VERSION = '0.
|
19
|
+
VERSION = '0.5.0'
|
20
20
|
end
|
21
21
|
|
22
22
|
require_relative 'ircparser/error'
|
23
23
|
require_relative 'ircparser/message'
|
24
|
-
require_relative 'ircparser/
|
24
|
+
require_relative 'ircparser/prefix'
|
data/lib/ircparser/message.rb
CHANGED
@@ -36,17 +36,17 @@ module IRCParser
|
|
36
36
|
# Public: An array of command parameters.
|
37
37
|
attr_reader :parameters
|
38
38
|
|
39
|
-
# Public: The
|
40
|
-
attr_reader :
|
39
|
+
# Public: The prefix of this command or nil if unprefixd.
|
40
|
+
attr_reader :prefix
|
41
41
|
|
42
42
|
# Public: A hash of IRCv3 message tags.
|
43
43
|
attr_reader :tags
|
44
44
|
|
45
45
|
# Public: Initialize a new message.
|
46
|
-
def initialize command: String.new, parameters: Array.new,
|
46
|
+
def initialize command: String.new, parameters: Array.new, prefix: nil, tags: Hash.new
|
47
47
|
@command = command
|
48
48
|
@parameters = parameters
|
49
|
-
@
|
49
|
+
@prefix = prefix
|
50
50
|
@tags = tags
|
51
51
|
end
|
52
52
|
|
@@ -70,9 +70,9 @@ module IRCParser
|
|
70
70
|
current_token = __get_token buffer
|
71
71
|
end
|
72
72
|
|
73
|
-
# Have we encountered the
|
73
|
+
# Have we encountered the prefix of this message?
|
74
74
|
if current_token != nil && current_token[0] == ':'
|
75
|
-
components[:
|
75
|
+
components[:prefix] = IRCParser::Prefix.new current_token[1..-1]
|
76
76
|
current_token = __get_token buffer
|
77
77
|
end
|
78
78
|
|
@@ -106,10 +106,10 @@ module IRCParser
|
|
106
106
|
buffer += ' '
|
107
107
|
end
|
108
108
|
|
109
|
-
# Serialize the
|
110
|
-
unless
|
109
|
+
# Serialize the prefix.
|
110
|
+
unless prefix.nil?
|
111
111
|
buffer += ':'
|
112
|
-
buffer +=
|
112
|
+
buffer += prefix.to_s
|
113
113
|
buffer += ' '
|
114
114
|
end
|
115
115
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# IRCParser - Internet Relay Chat Message Parser
|
2
|
+
#
|
3
|
+
# Copyright (C) 2015-2017 Peter "SaberUK" Powell <petpow@saberuk.com>
|
4
|
+
#
|
5
|
+
# Permission to use, copy, modify, and/or distribute this software for any purpose with or without
|
6
|
+
# fee is hereby granted, provided that the above copyright notice and this permission notice appear
|
7
|
+
# in all copies.
|
8
|
+
#
|
9
|
+
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
10
|
+
# SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
11
|
+
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
12
|
+
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
13
|
+
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
14
|
+
# OF THIS SOFTWARE.
|
15
|
+
|
16
|
+
module IRCParser
|
17
|
+
|
18
|
+
# Public: Represents the prefix of an IRC message.
|
19
|
+
class Prefix
|
20
|
+
|
21
|
+
# Internal: A regular expression which matches a n!u@h mask.
|
22
|
+
MATCH_PREFIX = /^(?<nick>[^@!]+) (?:!(?<user>[^@]+))? (?:@(?<host>.+))?$/x
|
23
|
+
|
24
|
+
# Public: The hostname of this prefix or nil if no hostname was given.
|
25
|
+
attr_reader :host
|
26
|
+
|
27
|
+
# Public: The nickname of this user.
|
28
|
+
attr_reader :nick
|
29
|
+
|
30
|
+
# Public: The username of this prefix or nil if no username was given.
|
31
|
+
attr_reader :user
|
32
|
+
|
33
|
+
# Public: Initialise a new message prefix from a serialised prefix.
|
34
|
+
#
|
35
|
+
# prefix - Either a n!u@h mask or a server name.
|
36
|
+
def initialize prefix
|
37
|
+
if MATCH_PREFIX =~ prefix
|
38
|
+
@nick = $~[:nick]
|
39
|
+
@user = $~[:user]
|
40
|
+
@host = $~[:host]
|
41
|
+
else
|
42
|
+
raise IRCParser::Error.new(prefix), 'prefix is not a user mask or server name'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Public: serialises this prefix to the network form.
|
47
|
+
def to_s
|
48
|
+
buffer = @nick
|
49
|
+
buffer += "!#{@user}" unless @user.nil?
|
50
|
+
buffer += "@#{@host}" unless @host.nil?
|
51
|
+
return buffer
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/test/test_message.rb
CHANGED
@@ -19,7 +19,7 @@ require 'ircparser'
|
|
19
19
|
require 'minitest/autorun'
|
20
20
|
|
21
21
|
describe IRCParser::Message do
|
22
|
-
describe 'when checking a valid message with tags and a
|
22
|
+
describe 'when checking a valid message with tags and a prefix' do
|
23
23
|
before do
|
24
24
|
@text = '@tag1=value1;tag2;vendor1/tag3=value2;vendor2/tag4 :irc.example.com COMMAND param1 param2 :param3 param3'
|
25
25
|
@message = IRCParser::Message.parse @text
|
@@ -29,8 +29,8 @@ describe IRCParser::Message do
|
|
29
29
|
parameters = [ 'param1', 'param2', 'param3 param3' ]
|
30
30
|
|
31
31
|
@message.tags.must_equal tags
|
32
|
-
@message.
|
33
|
-
@message.
|
32
|
+
@message.prefix.wont_be_nil
|
33
|
+
@message.prefix.nick.must_equal 'irc.example.com'
|
34
34
|
@message.command.must_equal 'COMMAND'
|
35
35
|
@message.parameters.must_equal parameters
|
36
36
|
end
|
@@ -39,7 +39,7 @@ describe IRCParser::Message do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe 'when checking a valid message with a
|
42
|
+
describe 'when checking a valid message with a prefix but no tags' do
|
43
43
|
before do
|
44
44
|
@text = ':irc.example.com COMMAND param1 param2 :param3 param3'
|
45
45
|
@message = IRCParser::Message.parse @text
|
@@ -48,8 +48,8 @@ describe IRCParser::Message do
|
|
48
48
|
parameters = [ 'param1', 'param2', 'param3 param3' ]
|
49
49
|
|
50
50
|
@message.tags.must_be_empty
|
51
|
-
@message.
|
52
|
-
@message.
|
51
|
+
@message.prefix.wont_be_nil
|
52
|
+
@message.prefix.nick.must_equal 'irc.example.com'
|
53
53
|
@message.command.must_equal 'COMMAND'
|
54
54
|
@message.parameters.must_equal parameters
|
55
55
|
end
|
@@ -58,7 +58,7 @@ describe IRCParser::Message do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
describe 'when checking a valid message with tags but no
|
61
|
+
describe 'when checking a valid message with tags but no prefix' do
|
62
62
|
before do
|
63
63
|
@text = '@tag1=value1;tag2;vendor1/tag3=value2;vendor2/tag4 COMMAND param1 param2 :param3 param3'
|
64
64
|
@message = IRCParser::Message.parse @text
|
@@ -68,7 +68,7 @@ describe IRCParser::Message do
|
|
68
68
|
parameters = [ 'param1', 'param2', 'param3 param3' ]
|
69
69
|
|
70
70
|
@message.tags.must_equal tags
|
71
|
-
@message.
|
71
|
+
@message.prefix.must_be_nil
|
72
72
|
@message.command.must_equal 'COMMAND'
|
73
73
|
@message.parameters.must_equal parameters
|
74
74
|
end
|
@@ -77,7 +77,7 @@ describe IRCParser::Message do
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
describe 'when checking a valid message with tags but no
|
80
|
+
describe 'when checking a valid message with tags but no prefix' do
|
81
81
|
before do
|
82
82
|
@text = '@tag1=value1;tag2;vendor1/tag3=value2;vendor2/tag4 COMMAND param1 param2 :param3 param3'
|
83
83
|
@message = IRCParser::Message.parse @text
|
@@ -87,7 +87,7 @@ describe IRCParser::Message do
|
|
87
87
|
parameters = [ 'param1', 'param2', 'param3 param3' ]
|
88
88
|
|
89
89
|
@message.tags.must_equal tags
|
90
|
-
@message.
|
90
|
+
@message.prefix.must_be_nil
|
91
91
|
@message.command.must_equal 'COMMAND'
|
92
92
|
@message.parameters.must_equal parameters
|
93
93
|
end
|
@@ -97,14 +97,14 @@ describe IRCParser::Message do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
|
100
|
-
describe 'when checking a valid message with no tags,
|
100
|
+
describe 'when checking a valid message with no tags, prefix or parameters' do
|
101
101
|
before do
|
102
102
|
@text = 'COMMAND'
|
103
103
|
@message = IRCParser::Message.parse @text
|
104
104
|
end
|
105
105
|
it 'should consist of the correct components' do
|
106
106
|
@message.tags.must_be_empty
|
107
|
-
@message.
|
107
|
+
@message.prefix.must_be_nil
|
108
108
|
@message.command.must_equal 'COMMAND'
|
109
109
|
@message.parameters.must_be_empty
|
110
110
|
end
|
data/test/test_prefix.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# IRCParser - Internet Relay Chat Message Parser
|
2
|
+
#
|
3
|
+
# Copyright (C) 2015-2017 Peter "SaberUK" Powell <petpow@saberuk.com>
|
4
|
+
#
|
5
|
+
# Permission to use, copy, modify, and/or distribute this software for any purpose with or without
|
6
|
+
# fee is hereby granted, provided that the above copyright notice and this permission notice appear
|
7
|
+
# in all copies.
|
8
|
+
#
|
9
|
+
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
10
|
+
# SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
11
|
+
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
12
|
+
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
13
|
+
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
14
|
+
# OF THIS SOFTWARE.
|
15
|
+
|
16
|
+
$LOAD_PATH.unshift "#{Dir.pwd}/lib"
|
17
|
+
|
18
|
+
require 'ircparser'
|
19
|
+
require 'minitest/autorun'
|
20
|
+
|
21
|
+
describe IRCParser::Prefix do
|
22
|
+
PREFIXES = {
|
23
|
+
'nick!user@host' => { nick: 'nick', user: 'user', host: 'host' },
|
24
|
+
'nick!user' => { nick: 'nick', user: 'user', host: nil },
|
25
|
+
'nick@host' => { nick: 'nick', user: nil, host: 'host' },
|
26
|
+
'nick' => { nick: 'nick', user: nil, host: nil },
|
27
|
+
'irc.example.com' => { nick: 'irc.example.com', user: nil, host: nil },
|
28
|
+
}
|
29
|
+
|
30
|
+
PREFIXES.each do |serialized, deserialized|
|
31
|
+
describe 'when checking a valid prefix' do
|
32
|
+
before do
|
33
|
+
@prefix = IRCParser::Prefix.new serialized
|
34
|
+
end
|
35
|
+
it 'should consist of the correct components' do
|
36
|
+
%i(nick user host).each do |component|
|
37
|
+
if deserialized[component].nil?
|
38
|
+
@prefix.send(component).must_be_nil
|
39
|
+
else
|
40
|
+
@prefix.send(component).must_equal deserialized[component]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
it 'should serialise back to the same text' do
|
45
|
+
@prefix.to_s.must_equal serialized
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'when checking an invalid user prefix' do
|
51
|
+
it 'should throw an IRCParser::Error when components are missing' do
|
52
|
+
proc { IRCParser::Prefix.new 'nick!@' }.must_raise IRCParser::Error
|
53
|
+
proc { IRCParser::Prefix.new '!user@' }.must_raise IRCParser::Error
|
54
|
+
proc { IRCParser::Prefix.new '!@host' }.must_raise IRCParser::Error
|
55
|
+
proc { IRCParser::Prefix.new 'nick!user@' }.must_raise IRCParser::Error
|
56
|
+
proc { IRCParser::Prefix.new 'nick!@host' }.must_raise IRCParser::Error
|
57
|
+
proc { IRCParser::Prefix.new '!user@host' }.must_raise IRCParser::Error
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ircparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter "SaberUK" Powell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -67,9 +67,9 @@ files:
|
|
67
67
|
- lib/ircparser.rb
|
68
68
|
- lib/ircparser/error.rb
|
69
69
|
- lib/ircparser/message.rb
|
70
|
-
- lib/ircparser/
|
70
|
+
- lib/ircparser/prefix.rb
|
71
71
|
- test/test_message.rb
|
72
|
-
- test/
|
72
|
+
- test/test_prefix.rb
|
73
73
|
homepage: https://github.com/SaberUK/ircparser
|
74
74
|
licenses:
|
75
75
|
- ISC
|
data/lib/ircparser/source.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
# IRCParser - Internet Relay Chat Message Parser
|
2
|
-
#
|
3
|
-
# Copyright (C) 2015-2017 Peter "SaberUK" Powell <petpow@saberuk.com>
|
4
|
-
#
|
5
|
-
# Permission to use, copy, modify, and/or distribute this software for any purpose with or without
|
6
|
-
# fee is hereby granted, provided that the above copyright notice and this permission notice appear
|
7
|
-
# in all copies.
|
8
|
-
#
|
9
|
-
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
10
|
-
# SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
11
|
-
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
12
|
-
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
13
|
-
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
14
|
-
# OF THIS SOFTWARE.
|
15
|
-
|
16
|
-
module IRCParser
|
17
|
-
|
18
|
-
# Public: Represents the source of an IRC message.
|
19
|
-
class Source
|
20
|
-
|
21
|
-
# Internal: A regular expression which matches a n!u@h mask.
|
22
|
-
MATCH_USER = /^(?<nick>[^@!]+) (?:!(?<user>[^@]+))? (?:@(?<host>.+))?$/x
|
23
|
-
|
24
|
-
# Internal: A regular expression which matches a server name.
|
25
|
-
MATCH_SERVER = /^(?<host>\S+\.\S+)$/
|
26
|
-
|
27
|
-
# Public: The hostname of this source.
|
28
|
-
attr_reader :host
|
29
|
-
|
30
|
-
# Public: The nickname of this user or nil if the source is a server.
|
31
|
-
attr_reader :nick
|
32
|
-
|
33
|
-
# Public: The username of this user or nil if the source is a server.
|
34
|
-
attr_reader :user
|
35
|
-
|
36
|
-
# Public: Initialise a new message source from a serialised source.
|
37
|
-
#
|
38
|
-
# source - Either a n!u@h mask or a server name.
|
39
|
-
def initialize source
|
40
|
-
if MATCH_SERVER =~ source
|
41
|
-
@type = :server
|
42
|
-
@host = $~[:host]
|
43
|
-
elsif MATCH_USER =~ source
|
44
|
-
@type = :user
|
45
|
-
@nick = $~[:nick]
|
46
|
-
@user = $~[:user]
|
47
|
-
@host = $~[:host]
|
48
|
-
else
|
49
|
-
raise IRCParser::Error.new(source), 'source is not a user mask or server name'
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Public: Whether this source represents a user.
|
54
|
-
def is_user?
|
55
|
-
return @type == :user
|
56
|
-
end
|
57
|
-
|
58
|
-
# Public: Whether this source represents a server.
|
59
|
-
def is_server?
|
60
|
-
return @type == :server
|
61
|
-
end
|
62
|
-
|
63
|
-
# Public: The name by which this source can be identified.
|
64
|
-
def name
|
65
|
-
return is_user? ? @nick : @host
|
66
|
-
end
|
67
|
-
|
68
|
-
# Public: serialises this source to the serialised form.
|
69
|
-
def to_s
|
70
|
-
if is_user?
|
71
|
-
buffer = @nick
|
72
|
-
buffer += "!#{@user}" unless @user.nil?
|
73
|
-
buffer += "@#{@host}" unless @host.nil?
|
74
|
-
return buffer
|
75
|
-
end
|
76
|
-
return @host
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
data/test/test_source.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
# IRCParser - Internet Relay Chat Message Parser
|
2
|
-
#
|
3
|
-
# Copyright (C) 2015-2017 Peter "SaberUK" Powell <petpow@saberuk.com>
|
4
|
-
#
|
5
|
-
# Permission to use, copy, modify, and/or distribute this software for any purpose with or without
|
6
|
-
# fee is hereby granted, provided that the above copyright notice and this permission notice appear
|
7
|
-
# in all copies.
|
8
|
-
#
|
9
|
-
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
10
|
-
# SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
11
|
-
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
12
|
-
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
13
|
-
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
14
|
-
# OF THIS SOFTWARE.
|
15
|
-
|
16
|
-
$LOAD_PATH.unshift "#{Dir.pwd}/lib"
|
17
|
-
|
18
|
-
require 'ircparser'
|
19
|
-
require 'minitest/autorun'
|
20
|
-
|
21
|
-
describe IRCParser::Source do
|
22
|
-
describe 'when checking a valid server source' do
|
23
|
-
before do
|
24
|
-
@text = 'irc.example.com'
|
25
|
-
@source = IRCParser::Source.new @text
|
26
|
-
end
|
27
|
-
it 'should consist of the correct components' do
|
28
|
-
@source.nick.must_be_nil
|
29
|
-
@source.user.must_be_nil
|
30
|
-
@source.host.must_equal 'irc.example.com'
|
31
|
-
end
|
32
|
-
it 'should be a server not a user' do
|
33
|
-
@source.is_server?.must_equal true
|
34
|
-
@source.is_user?.must_equal false
|
35
|
-
end
|
36
|
-
it 'should serialise back to the same text' do
|
37
|
-
@source.to_s.must_equal @text
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
USER_MASKS = {
|
42
|
-
'nick!user@host' => { nick: 'nick', user: 'user', host: 'host' },
|
43
|
-
'nick!user' => { nick: 'nick', user: 'user', host: nil },
|
44
|
-
'nick@host' => { nick: 'nick', user: nil, host: 'host' },
|
45
|
-
'nick' => { nick: 'nick', user: nil, host: nil }
|
46
|
-
}
|
47
|
-
|
48
|
-
USER_MASKS.each do |serialized, deserialized|
|
49
|
-
describe 'when checking a valid user source' do
|
50
|
-
before do
|
51
|
-
@source = IRCParser::Source.new serialized
|
52
|
-
end
|
53
|
-
it 'should consist of the correct components' do
|
54
|
-
@source.nick.must_equal deserialized[:nick]
|
55
|
-
@source.user.must_equal deserialized[:user]
|
56
|
-
@source.host.must_equal deserialized[:host]
|
57
|
-
end
|
58
|
-
it 'should be a user not a server' do
|
59
|
-
@source.is_server?.must_equal false
|
60
|
-
@source.is_user?.must_equal true
|
61
|
-
end
|
62
|
-
it 'should serialise back to the same text' do
|
63
|
-
@source.to_s.must_equal serialized
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe 'when checking an invalid user source' do
|
69
|
-
it 'should throw an IRCParser::Error when components are missing' do
|
70
|
-
proc { IRCParser::Source.new 'nick!@' }.must_raise IRCParser::Error
|
71
|
-
proc { IRCParser::Source.new '!user@' }.must_raise IRCParser::Error
|
72
|
-
proc { IRCParser::Source.new '!@host' }.must_raise IRCParser::Error
|
73
|
-
proc { IRCParser::Source.new 'nick!user@' }.must_raise IRCParser::Error
|
74
|
-
proc { IRCParser::Source.new 'nick!@host' }.must_raise IRCParser::Error
|
75
|
-
proc { IRCParser::Source.new '!user@host' }.must_raise IRCParser::Error
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|