ircsupport 0.1.0 → 0.2.0

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.
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ 0.2.0
2
+ -----
3
+ * Add missing `#ctcp_type` and `#dcc_type` accessors
4
+ * Make `#type, `#ctcp_type`, and `#dcc_type` return symbols, not strings
5
+ * Rename `#numeric_name` to `#name`
6
+ * Remove superfluous `#numeric` and `#numeric_args` (use `#command` and `#args`)
7
+ * Depend on Ruby 1.9.2 and use Float::INFINITY for some ISupport defaults
8
+
1
9
  0.1.0
2
10
  -----
3
11
  * Initial release
data/README.md CHANGED
@@ -48,7 +48,7 @@ msg.is_action?
48
48
  # => false
49
49
 
50
50
  msg.type
51
- # => 'private_msg'
51
+ # => :message
52
52
 
53
53
  IRCSupport::Validations.valid_nick_name?("Foo{}Bar[]")
54
54
  # => true
@@ -65,6 +65,9 @@ numeric_to_name('001')
65
65
  # => 'RPL_WELCOME'
66
66
  ```
67
67
 
68
+ See the [API documentation](http://rubydoc.info/github/hinrik/ircsupport) for
69
+ more details.
70
+
68
71
  Components
69
72
  ----------
70
73
 
@@ -109,8 +112,8 @@ Supported platforms
109
112
  -------------------
110
113
 
111
114
  IRCSupport works on any Ruby 1.9-compatible VM. As of this writing, Rubinius'
112
- and JRuby's encoding support is not complete, so some of the functions in
113
- `IRCSupport::Encoding` will not work on those platforms.
115
+ encoding support is not complete, so some of the functions in
116
+ `IRCSupport::Encoding` will not work on that platform.
114
117
 
115
118
  Contributing
116
119
  ------------
@@ -16,11 +16,12 @@ Gem::Specification.new do |gem|
16
16
  gem.test_files = `git ls-files -- test/*`.split("\n")
17
17
  gem.require_path = "lib"
18
18
  gem.has_rdoc = "yard"
19
- gem.required_ruby_version = '>= 1.9.1'
19
+ gem.required_ruby_version = '>= 1.9.2'
20
20
 
21
21
  gem.add_development_dependency "rake"
22
22
  gem.add_development_dependency "simplecov"
23
23
  gem.add_development_dependency "yard", ">= 0.7.5"
24
+ gem.add_development_dependency "redcarpet"
24
25
  gem.add_development_dependency "minitest", ">= 2.11.4"
25
26
  gem.add_development_dependency "turn"
26
27
  end
@@ -7,9 +7,11 @@ module IRCSupport
7
7
  # @private
8
8
  @@strict_rfc1459_map = ['a-z{}|', 'A-Z[]\\']
9
9
 
10
+ module_function
11
+
12
+ # Turn a string into IRC upper case, modifying it in place.
10
13
  # @param [String] irc_string An IRC string (nickname, channel, etc).
11
14
  # @param [Symbol] casemapping An IRC casemapping.
12
- # Like {#irc_upcase}, but modifies the string in place.
13
15
  # @return [String] An upper case version of the IRC string according to
14
16
  # the casemapping.
15
17
  def irc_upcase!(irc_string, casemapping = :rfc1459)
@@ -19,7 +21,6 @@ module IRCSupport
19
21
  when :rfc1459
20
22
  irc_string.tr!(*@@rfc1459_map)
21
23
  when :'strict-rfc1459'
22
- # the backslash must be last, otherwise it causes issues
23
24
  irc_string.tr!(*@@strict_rfc1459_map)
24
25
  else
25
26
  raise ArgumentError, "Unsupported casemapping #{casemapping}"
@@ -28,6 +29,7 @@ module IRCSupport
28
29
  return irc_string
29
30
  end
30
31
 
32
+ # Turn a string into IRC upper case.
31
33
  # @param [String] irc_string An IRC string (nickname, channel, etc)
32
34
  # @param [Symbol] casemapping An IRC casemapping
33
35
  # @return [String] An upper case version of the IRC string according to
@@ -38,9 +40,9 @@ module IRCSupport
38
40
  return result
39
41
  end
40
42
 
43
+ # Turn a string into IRC lower case, modifying it in place.
41
44
  # @param [String] irc_string An IRC string (nickname, channel, etc)
42
45
  # @param [Symbol] casemapping An IRC casemapping
43
- # Like {#irc_downcase}, but modifies the string in place.
44
46
  # @return [String] A lower case version of the IRC string according to
45
47
  # the casemapping
46
48
  def irc_downcase!(irc_string, casemapping = :rfc1459)
@@ -50,7 +52,6 @@ module IRCSupport
50
52
  when :rfc1459
51
53
  irc_string.tr!(*@@rfc1459_map.reverse)
52
54
  when :'strict-rfc1459'
53
- # the backslash must be last, otherwise it causes issues
54
55
  irc_string.tr!(*@@strict_rfc1459_map.reverse)
55
56
  else
56
57
  raise ArgumentError, "Unsupported casemapping #{casemapping}"
@@ -59,6 +60,7 @@ module IRCSupport
59
60
  return irc_string
60
61
  end
61
62
 
63
+ # Turn a string into IRC lower case.
62
64
  # @param [String] irc_string An IRC string (nickname, channel, etc).
63
65
  # @param [Symbol] casemapping An IRC casemapping.
64
66
  # @return [String] A lower case version of the IRC string according to
@@ -69,6 +71,7 @@ module IRCSupport
69
71
  return result
70
72
  end
71
73
 
74
+ # Check an IRC identifier (nick, channel) for equality.
72
75
  # @param [String] first The first IRC string to compare.
73
76
  # @param [String] second The second IRC string to compare.
74
77
  # @param [Symbol] casemapping The IRC casemappig to use for the comparison.
@@ -77,8 +80,5 @@ module IRCSupport
77
80
  def irc_eql?(first, second, casemapping = :rfc1459)
78
81
  return irc_upcase(first, casemapping) == irc_upcase(second, casemapping)
79
82
  end
80
-
81
- module_function :irc_upcase, :irc_upcase!, :irc_downcase,
82
- :irc_downcase!, :irc_eql?
83
83
  end
84
84
  end
@@ -1,5 +1,8 @@
1
1
  module IRCSupport
2
2
  module Encoding
3
+ module_function
4
+
5
+ # Decode a message from an IRC connection.
3
6
  # @param [String] string The IRC string you want to decode.
4
7
  # @param [Symbol] encoding The source encoding.
5
8
  # @return [String] A UTF-8 Ruby string.
@@ -8,6 +11,7 @@ module IRCSupport
8
11
  decode_irc!(string, encoding)
9
12
  end
10
13
 
14
+ # Encode a message to be sent over an IRC connection.
11
15
  # @param [String] string The string you want to encode.
12
16
  # @param [Symbol] encoding The target encoding.
13
17
  # @return [String] A string encoded in the encoding you specified.
@@ -16,9 +20,9 @@ module IRCSupport
16
20
  encode_irc!(string, encoding)
17
21
  end
18
22
 
23
+ # Decode a message from an IRC connection, modifying it in place.
19
24
  # @param [String] string The IRC string you want to decode.
20
25
  # @param [Symbol] encoding The source encoding.
21
- # Like {#decode_irc}, but modifies the string in place.
22
26
  # @return [String] A UTF-8 Ruby string.
23
27
  def decode_irc!(string, encoding = :irc)
24
28
  if encoding == :irc
@@ -40,9 +44,9 @@ module IRCSupport
40
44
  return string
41
45
  end
42
46
 
47
+ # Encode a message to be sent over an IRC connection, modifying it in place.
43
48
  # @param [String] string The string you want to encode.
44
49
  # @param [Symbol] encoding The target encoding.
45
- # Like {#encode_irc}, but modifies the string in place.
46
50
  # @return [String] A string encoded in the encoding you specified.
47
51
  def encode_irc!(string, encoding = :irc)
48
52
  if encoding == :irc
@@ -68,7 +72,5 @@ module IRCSupport
68
72
 
69
73
  return string
70
74
  end
71
-
72
- module_function :decode_irc, :decode_irc!, :encode_irc, :encode_irc!
73
75
  end
74
76
  end
@@ -47,6 +47,9 @@ module IRCSupport
47
47
  silver: "15",
48
48
  }
49
49
 
50
+ module_function
51
+
52
+ # Check if string has IRC color codes.
50
53
  # @param [String] string The string you want to check.
51
54
  # @return [Boolean] Will be true if the string contains IRC color codes.
52
55
  def has_color?(string)
@@ -54,6 +57,7 @@ module IRCSupport
54
57
  return false
55
58
  end
56
59
 
60
+ # Check if string has IRC formatting codes.
57
61
  # @param [String] string The string you want to check.
58
62
  # @return [Boolean] Will be true if the string contains IRC formatting codes.
59
63
  def has_formatting?(string)
@@ -61,8 +65,8 @@ module IRCSupport
61
65
  return false
62
66
  end
63
67
 
68
+ # Strip IRC color codes from a string, modifying it in place.
64
69
  # @param [String] string The string you want to strip.
65
- # Like {#strip_color}, but modifies the string in place.
66
70
  # @return [String] A string stripped of all IRC color codes.
67
71
  def strip_color!(string)
68
72
  [@@mirc_color, @@rgb_color, @@ecma48_color].each do |pattern|
@@ -73,6 +77,7 @@ module IRCSupport
73
77
  return string
74
78
  end
75
79
 
80
+ # Strip IRC color codes from a string.
76
81
  # @param [String] string The string you want to strip.
77
82
  # @return [String] A string stripped of all IRC color codes.
78
83
  def strip_color(string)
@@ -80,8 +85,8 @@ module IRCSupport
80
85
  return strip_color!(string)
81
86
  end
82
87
 
88
+ # Strip IRC formatting codes from a string, modifying it in place.
83
89
  # @param [String] string The string you want to strip.
84
- # Like {#strip_formatting}, but modifies the string in place.
85
90
  # @return [String] A string stripped of all IRC formatting codes.
86
91
  def strip_formatting!(string)
87
92
  string.gsub!(@@formatting, '')
@@ -90,6 +95,7 @@ module IRCSupport
90
95
  return string
91
96
  end
92
97
 
98
+ # Strip IRC formatting codes from a string.
93
99
  # @param [String] string The string you want to strip.
94
100
  # @return [String] A string stripped of all IRC formatting codes.
95
101
  def strip_formatting(string)
@@ -97,9 +103,9 @@ module IRCSupport
97
103
  return strip_formatting!(string)
98
104
  end
99
105
 
106
+ # Apply IRC formatting codes to a string, modifying it in place.
100
107
  # @param [*Array] settings A list of color and formatting attributes you
101
108
  # want to apply.
102
- # Like {#irc_format}, but modifies the string in place.
103
109
  # @param [String] string A string you want to format.
104
110
  # @return [String] A formatted string.
105
111
  def irc_format!(*settings, string)
@@ -134,6 +140,7 @@ module IRCSupport
134
140
  return string
135
141
  end
136
142
 
143
+ # Apply IRC formatting codes to a string.
137
144
  # @param [*Array] settings A list of color and formatting attributes you
138
145
  # want to apply.
139
146
  # @param [String] string A string you want to format.
@@ -142,8 +149,5 @@ module IRCSupport
142
149
  string = string.dup
143
150
  return irc_format!(*settings, string)
144
151
  end
145
-
146
- module_function :has_color?, :has_formatting?, :strip_color, :strip_color!,
147
- :strip_formatting, :strip_formatting!, :irc_format
148
152
  end
149
153
  end
@@ -7,6 +7,9 @@ module IRCSupport
7
7
  # @private
8
8
  @@mask_optional = '[\x01-\xFF]{1,1}'
9
9
 
10
+ module_function
11
+
12
+ # Match strings to an IRC mask.
10
13
  # @param [String] mask The mask to match against.
11
14
  # @param [String] string The string to match against the mask.
12
15
  # @param [Symbol] casemapping The IRC casemapping to use in the match.
@@ -24,6 +27,7 @@ module IRCSupport
24
27
  return false
25
28
  end
26
29
 
30
+ # Match strings to multiple IRC masks.
27
31
  # @param [Array] mask The masks to match against.
28
32
  # @param [Array] strings The strings to match against the masks.
29
33
  # @param [Symbol] casemapping The IRC casemapping to use in the match.
@@ -42,6 +46,7 @@ module IRCSupport
42
46
  return results
43
47
  end
44
48
 
49
+ # Normalize (expand) an IRC mask.
45
50
  # @param [String] mask A partial mask (e.g. 'foo*').
46
51
  # @return [String] A normalized mask (e.g. 'foo*!*@*).
47
52
  def normalize_mask(mask)
@@ -66,7 +71,5 @@ module IRCSupport
66
71
  (1..2).each { |i| parts[i] ||= '*' }
67
72
  return parts[0] + "!" + parts[1] + "@" + parts[2]
68
73
  end
69
-
70
- module_function :matches_mask, :matches_mask_array, :normalize_mask
71
74
  end
72
75
  end
@@ -23,33 +23,25 @@ module IRCSupport
23
23
  # @return [String] The type of the IRC message.
24
24
  def type
25
25
  return @type if @type
26
- return @command.downcase if self.class.name == 'IRCSupport::Message'
26
+ return @command.downcase.to_sym if self.class.name == 'IRCSupport::Message'
27
27
  type = self.class.name.match(/^IRCSupport::Message::(.*)/)[1]
28
- return type.gsub(/::|(?<=[[:lower:]])(?=[[:upper:]])/, '_').downcase
28
+ return type.gsub(/::|(?<=[[:lower:]])(?=[[:upper:]])/, '_').downcase.to_sym
29
29
  end
30
30
 
31
31
  class Numeric < Message
32
- # @return [String] The IRC command numeric.
33
- attr_accessor :numeric
34
-
35
- # @return [String] The name of the IRC command numeric.
36
- attr_accessor :numeric_name
37
-
38
- # @return [String] The arguments to the numeric command.
39
- attr_accessor :numeric_args
32
+ # @return [String] The name of the IRC command numeric (e.g. RPL_WELCOME).
33
+ attr_accessor :name
40
34
 
41
35
  # @private
42
36
  def initialize(args)
43
37
  super(args)
44
- @numeric = args[:command]
45
- @numeric_args = args[:args]
46
- @numeric_name = IRCSupport::Numerics.numeric_to_name(@numeric)
47
- @type = @numeric
38
+ @name = IRCSupport::Numerics.numeric_to_name(@command)
39
+ @type = @command.to_sym
48
40
  end
49
41
 
50
42
  # @return [Boolean] Will be true if this is an error numeric.
51
43
  def is_error?
52
- return @numeric_name =~ /^ERR/ ? true : false
44
+ return @name =~ /^ERR/ ? true : false
53
45
  end
54
46
  end
55
47
 
@@ -194,6 +186,9 @@ module IRCSupport
194
186
  # @return [String] The sender of the DCC message.
195
187
  attr_accessor :sender
196
188
 
189
+ # @return [Symbol] The type of the DCC message.
190
+ attr_accessor :dcc_type
191
+
197
192
  # @return [String] The argument string to the DCC message.
198
193
  attr_accessor :dcc_args
199
194
 
@@ -202,8 +197,8 @@ module IRCSupport
202
197
  super(args)
203
198
  @sender = args[:prefix]
204
199
  @dcc_args = args[:args][1]
205
- @dcc_type = args[:dcc_type]
206
- @type = "dcc_#{@dcc_type.downcase}"
200
+ @dcc_type = args[:dcc_type].downcase.to_sym
201
+ @type = "dcc_#@dcc_type".to_sym
207
202
  end
208
203
  end
209
204
 
@@ -481,7 +476,7 @@ module IRCSupport
481
476
  def initialize(args)
482
477
  super(args)
483
478
  @subcommand = args[:args][0]
484
- @type = "cap_#{@subcommand.downcase}"
479
+ @type = "cap_#{@subcommand.downcase}".to_sym
485
480
  if args[:args][1] == '*'
486
481
  @multipart = true
487
482
  @reply = args[:args][2]
@@ -588,6 +583,9 @@ module IRCSupport
588
583
  end
589
584
 
590
585
  class CTCP < Message
586
+ # @return [String] The type of the CTCP message.
587
+ attr_accessor :ctcp_type
588
+
591
589
  # @return [String] The arguments to the CTCP.
592
590
  attr_accessor :ctcp_args
593
591
 
@@ -596,8 +594,8 @@ module IRCSupport
596
594
  super(args)
597
595
  @sender = args[:prefix]
598
596
  @ctcp_args = args[:args][1]
599
- @ctcp_type = args[:ctcp_type]
600
- @type = "ctcp_#{@ctcp_type.downcase}"
597
+ @ctcp_type = args[:ctcp_type].downcase.to_sym
598
+ @type = "ctcp_#@ctcp_type".to_sym
601
599
 
602
600
  if args[:is_public]
603
601
  @channel = args[:args][0].split(/,/).first
@@ -609,7 +607,7 @@ module IRCSupport
609
607
  # @private
610
608
  def initialize(args)
611
609
  super(args)
612
- @type = "ctcpreply_#{@ctcp_type.downcase}"
610
+ @type = "ctcpreply_#@ctcp_type".to_sym
613
611
  end
614
612
  end
615
613
  end
@@ -1,6 +1,10 @@
1
1
  module IRCSupport
2
2
  module Modes
3
- # @param [Array] modes The modes you want to parse.
3
+ module_function
4
+
5
+ # Parse mode changes.
6
+ # @param [Array] modes The modes you want to parse. A string of mode
7
+ # changes (e.g. `'-i+k+l'`) followed by any arguments (e.g. `'secret', 25`).
4
8
  # @return [Array] Each element will be a hash with two keys: `:set`,
5
9
  # a boolean indicating whether the mode is being set (instead of unset);
6
10
  # and `:mode`, the mode character.
@@ -16,6 +20,7 @@ module IRCSupport
16
20
  return mode_changes
17
21
  end
18
22
 
23
+ # Parse channel mode changes.
19
24
  # @param [Array] modes The modes you want to parse.
20
25
  # @option opts [Hash] :chanmodes The channel modes which are allowed. This is
21
26
  # the same as the "CHANMODES" isupport option.
@@ -64,8 +69,8 @@ module IRCSupport
64
69
  return mode_changes
65
70
  end
66
71
 
67
- # @param [String] modes A string of modes you want to condense
68
- # (remove duplicates).
72
+ # Condense mode string by removing duplicates.
73
+ # @param [String] modes A string of modes you want condensed.
69
74
  # @return [Strings] A condensed mode string.
70
75
  def condense_modes(modes)
71
76
  action = nil
@@ -82,6 +87,7 @@ module IRCSupport
82
87
  return result
83
88
  end
84
89
 
90
+ # Calculate the difference between two mode strings.
85
91
  # @param [String] before The "before" mode string.
86
92
  # @param [String] after The "after" mode string.
87
93
  # @return [String] A modestring representing the difference between the
@@ -95,7 +101,5 @@ module IRCSupport
95
101
  result << added.map { |m| '+' + m }.join
96
102
  return condense_modes(result)
97
103
  end
98
-
99
- module_function :parse_modes, :parse_channel_modes, :condense_modes, :diff_modes
100
104
  end
101
105
  end
@@ -225,18 +225,20 @@ module IRCSupport
225
225
  # @private
226
226
  @@name_to_numeric_map = @@numeric_to_name_map.invert
227
227
 
228
+ module_function
229
+
230
+ # Look up the name of an IRC numeric.
228
231
  # @param [String] numeric A numeric to look up.
229
232
  # @return [String] The name of the numeric.
230
233
  def numeric_to_name(numeric)
231
234
  return @@numeric_to_name_map[numeric]
232
235
  end
233
236
 
237
+ # Look up an IRC numeric by name.
234
238
  # @param [String] name A name to look up.
235
239
  # @return [String] The numeric corresponding to the name.
236
240
  def name_to_numeric(name)
237
241
  return @@name_to_numeric_map[name]
238
242
  end
239
-
240
- module_function :numeric_to_name, :name_to_numeric
241
243
  end
242
244
  end
@@ -54,16 +54,16 @@ module IRCSupport
54
54
  "D" => %w[i m n p s t r]
55
55
  },
56
56
  "MODES" => 1,
57
- "NICKLEN" => 999,
58
- "MAXBANS" => 999,
59
- "TOPICLEN" => 999,
60
- "KICKLEN" => 999,
61
- "CHANNELLEN" => 999,
57
+ "NICKLEN" => Float::INFINITY,
58
+ "MAXBANS" => Float::INFINITY,
59
+ "TOPICLEN" => Float::INFINITY,
60
+ "KICKLEN" => Float::INFINITY,
61
+ "CHANNELLEN" => Float::INFINITY,
62
62
  "CHIDLEN" => 5,
63
- "AWAYLEN" => 999,
63
+ "AWAYLEN" => Float::INFINITY,
64
64
  "MAXTARGETS" => 1,
65
- "MAXCHANNELS" => 999,
66
- "CHANLIMIT" => {"#" => 999},
65
+ "MAXCHANNELS" => Float::INFINITY,
66
+ "CHANLIMIT" => {"#" => Float::INFINITY},
67
67
  "STATUSMSG" => ["@", "+"],
68
68
  "CASEMAPPING" => :rfc1459,
69
69
  "ELIST" => [],
@@ -81,12 +81,13 @@ module IRCSupport
81
81
  # @return [Array]
82
82
  attr_reader :capabilities
83
83
 
84
- # @return [IRCSupport::Parser]
84
+ # @private
85
85
  def initialize
86
86
  @isupport = @@default_isupport
87
87
  @capabilities = []
88
88
  end
89
89
 
90
+ # Perform low-level parsing of an IRC protocol line.
90
91
  # @param [String] line An IRC protocol line you wish to decompose.
91
92
  # @return [Hash] A decomposed IRC protocol line with 3 keys:
92
93
  # `command`, the IRC command; `prefix`, the prefix to the
@@ -107,6 +108,7 @@ module IRCSupport
107
108
  return elems
108
109
  end
109
110
 
111
+ # Compose an IRC protocol line.
110
112
  # @param [Hash] elems The attributes of the message (as returned
111
113
  # by {#decompose_line}).
112
114
  # @return [String] An IRC protocol line.
@@ -134,6 +136,7 @@ module IRCSupport
134
136
  return line
135
137
  end
136
138
 
139
+ # Parse an IRC protocol line into a complete message object.
137
140
  # @param [String] line An IRC protocol line.
138
141
  # @return [IRCSupport::Message] A parsed message object.
139
142
  def parse(line)
@@ -190,9 +193,9 @@ module IRCSupport
190
193
 
191
194
  message = msg_const.new(elems)
192
195
 
193
- if message.type == '005'
196
+ if message.type == :'005'
194
197
  @isupport.merge! message.isupport
195
- elsif message.type == 'cap_ack'
198
+ elsif message.type == :cap_ack
196
199
  message.capabilities.each do |capability, options|
197
200
  if options.include?(:disable)
198
201
  @capabilities = @capabilities - [capability]
@@ -205,6 +208,7 @@ module IRCSupport
205
208
  return message
206
209
  end
207
210
 
211
+ # CTCP-quote a message.
208
212
  # @param [String] type The CTCP type.
209
213
  # @param [String] message The text of the CTCP message.
210
214
  # @return [String] A CTCP-quoted message.
@@ -10,6 +10,9 @@ module IRCSupport
10
10
  # @private
11
11
  @@channel = /[^\x00\x07\x0a\x0d :,]+/
12
12
 
13
+ module_function
14
+
15
+ # Check if a string is a valid nickname.
13
16
  # @param [String] nickname A nickname to validate.
14
17
  # @return [Boolean] Will be true if the nickname is valid.
15
18
  def valid_nickname?(nickname)
@@ -17,6 +20,7 @@ module IRCSupport
17
20
  return false
18
21
  end
19
22
 
23
+ # Check if a string is a valid channel name.
20
24
  # @param [String] channel A channel name to validate.
21
25
  # @param [Array] chantypes The channel types which are allowed. This is
22
26
  # the same as the "CHANTYPES" isupport option.
@@ -27,7 +31,5 @@ module IRCSupport
27
31
  return true if channel =~ /\A[#{prefix}]#@@channel\z/
28
32
  return false
29
33
  end
30
-
31
- module_function :valid_nickname?, :valid_channel_name?
32
34
  end
33
35
  end
@@ -1,4 +1,4 @@
1
1
  module IRCSupport
2
2
  # @private
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
4
4
  end
@@ -9,8 +9,8 @@ describe "Encoding" do
9
9
  cp1252 = "l\xFA\xF0i"
10
10
 
11
11
  it "should decode correctly" do
12
- if %w{jruby rbx}.include?(RUBY_ENGINE)
13
- skip("Encoding support is incomplete on rbx and jruby")
12
+ if RUBY_ENGINE == "rbx"
13
+ skip("Encoding support is incomplete on Rubinius")
14
14
  end
15
15
  decode_irc(utf8).must_equal utf8
16
16
  decode_irc(utf8, 'UTF-8').must_equal utf8
@@ -18,8 +18,8 @@ describe "Encoding" do
18
18
  end
19
19
 
20
20
  it "should encode correctly" do
21
- if %w{jruby rbx}.include?(RUBY_ENGINE)
22
- skip("Encoding support is incomplete on rbx and jruby")
21
+ if RUBY_ENGINE == "rbx"
22
+ skip("Encoding support is incomplete on Rubinius")
23
23
  end
24
24
  encode_irc(utf8).bytes.to_a.must_equal cp1252.bytes.to_a
25
25
  encode_irc(utf8, 'UTF-8').bytes.to_a.must_equal utf8.bytes.to_a
@@ -19,8 +19,8 @@ traffic = [
19
19
  msg.command.must_equal '001'
20
20
  msg.args[0].must_equal 'dsfdsfdsf'
21
21
  msg.args[1].must_equal 'Welcome to the freenode Internet Relay Chat Network dsfdsfdsf'
22
- msg.type.must_equal '001'
23
- msg.numeric_name.must_equal 'RPL_WELCOME'
22
+ msg.type.must_equal :'001'
23
+ msg.name.must_equal 'RPL_WELCOME'
24
24
  msg.is_error?.must_equal false
25
25
  },
26
26
  ],
@@ -84,7 +84,7 @@ traffic = [
84
84
  [
85
85
  ':NickServ!NickServ@services. NOTICE dsfdsfdsf :+This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify <password>.',
86
86
  ->(msg) {
87
- msg.type.must_equal 'message'
87
+ msg.type.must_equal :message
88
88
  msg.is_notice?.must_equal true
89
89
  msg.sender.must_equal 'NickServ!NickServ@services.'
90
90
  msg.identified?.must_equal true
@@ -128,21 +128,24 @@ traffic = [
128
128
  [
129
129
  ":literal!hinrik@w.nix.is PRIVMSG #foo4321 :\x01FOOBAR dsfdsfsdfds\x01",
130
130
  ->(msg) {
131
- msg.type.must_equal 'ctcp_foobar'
131
+ msg.type.must_equal :ctcp_foobar
132
+ msg.ctcp_type.must_equal :foobar
132
133
  msg.ctcp_args.must_equal 'dsfdsfsdfds'
133
134
  },
134
135
  ],
135
136
  [
136
137
  ":literal!hinrik@w.nix.is NOTICE #foo4321 :\x01FOOBAR dsfdsfsdfds\x01",
137
138
  ->(msg) {
138
- msg.type.must_equal 'ctcpreply_foobar'
139
+ msg.type.must_equal :ctcpreply_foobar
140
+ msg.ctcp_type.must_equal :foobar
139
141
  msg.ctcp_args.must_equal 'dsfdsfsdfds'
140
142
  },
141
143
  ],
142
144
  [
143
145
  ":literal!hinrik@w.nix.is PRIVMSG #foo4321 :\x01DCC FOO dsfdsfsdfds\x01",
144
146
  ->(msg) {
145
- msg.type.must_equal 'dcc_foo'
147
+ msg.type.must_equal :dcc_foo
148
+ msg.dcc_type.must_equal :foo
146
149
  msg.sender.must_equal 'literal!hinrik@w.nix.is'
147
150
  msg.dcc_args.must_equal 'dsfdsfsdfds'
148
151
  },
@@ -294,7 +297,7 @@ traffic = [
294
297
  [
295
298
  'NOTICE :foo bar',
296
299
  ->(msg) {
297
- msg.type.must_equal 'server_notice'
300
+ msg.type.must_equal :server_notice
298
301
  msg.sender.must_equal nil
299
302
  msg.target.must_equal nil
300
303
  msg.message.must_equal 'foo bar'
@@ -303,7 +306,7 @@ traffic = [
303
306
  [
304
307
  ':fooserver NOTICE AUTH :foo bar',
305
308
  ->(msg) {
306
- msg.type.must_equal 'server_notice'
309
+ msg.type.must_equal :server_notice
307
310
  msg.sender.must_equal 'fooserver'
308
311
  msg.target.must_equal 'AUTH'
309
312
  msg.message.must_equal 'foo bar'
@@ -312,7 +315,7 @@ traffic = [
312
315
  [
313
316
  ':foo-service NOTICE :foo bar',
314
317
  ->(msg) {
315
- msg.type.must_equal 'server_notice'
318
+ msg.type.must_equal :server_notice
316
319
  msg.sender.must_equal 'foo-service'
317
320
  msg.message.must_equal 'foo bar'
318
321
  },
@@ -321,7 +324,7 @@ traffic = [
321
324
  'CAP LS :foo -bar ~baz ~=quux',
322
325
  ->(msg) {
323
326
  msg.multipart.must_equal false
324
- msg.type.must_equal 'cap_ls'
327
+ msg.type.must_equal :cap_ls
325
328
  msg.subcommand.must_equal 'LS'
326
329
  msg.reply.must_equal 'foo -bar ~baz ~=quux'
327
330
  msg.capabilities.must_equal({
@@ -347,7 +350,7 @@ traffic = [
347
350
  [
348
351
  ':dsfdsfdsf!~hinrik@191-108-22-46.fiber.hringdu.is MODE +i',
349
352
  ->(msg) {
350
- msg.type.must_equal 'user_mode_change'
353
+ msg.type.must_equal :user_mode_change
351
354
  msg.mode_changes.must_equal [
352
355
  {
353
356
  mode: 'i',
@@ -359,7 +362,7 @@ traffic = [
359
362
  [
360
363
  ':dsfdsfdsf!~hinrik@191-108-22-46.fiber.hringdu.is MODE #foo4321 +tlk 300 foo',
361
364
  ->(msg) {
362
- msg.type.must_equal 'channel_mode_change'
365
+ msg.type.must_equal :channel_mode_change
363
366
  msg.changer.must_equal 'dsfdsfdsf!~hinrik@191-108-22-46.fiber.hringdu.is'
364
367
  msg.channel.must_equal '#foo4321'
365
368
  msg.mode_changes.must_equal [
@@ -383,7 +386,7 @@ traffic = [
383
386
  [
384
387
  'FOO BAR :baz',
385
388
  ->(msg) {
386
- msg.type.must_equal 'foo'
389
+ msg.type.must_equal :foo
387
390
  msg.prefix.must_equal nil
388
391
  msg.args.must_equal ['BAR', 'baz']
389
392
  }
@@ -1,8 +1,5 @@
1
- # https://github.com/rubinius/rubinius/issues/1575
2
- if RUBY_ENGINE != "rbx"
3
- require 'simplecov'
1
+ require 'simplecov'
4
2
 
5
- SimpleCov.start do
6
- add_filter "/test/"
7
- end
3
+ SimpleCov.start do
4
+ add_filter "/test/"
8
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ircsupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,63 +9,104 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-23 00:00:00.000000000 Z
12
+ date: 2012-12-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: &23821140 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
20
+ none: false
22
21
  type: :development
22
+ name: rake
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ none: false
23
29
  prerelease: false
24
- version_requirements: *23821140
25
30
  - !ruby/object:Gem::Dependency
26
- name: simplecov
27
- requirement: &23820680 !ruby/object:Gem::Requirement
28
- none: false
31
+ requirement: !ruby/object:Gem::Requirement
29
32
  requirements:
30
33
  - - ! '>='
31
34
  - !ruby/object:Gem::Version
32
35
  version: '0'
36
+ none: false
33
37
  type: :development
38
+ name: simplecov
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ none: false
34
45
  prerelease: false
35
- version_requirements: *23820680
36
46
  - !ruby/object:Gem::Dependency
37
- name: yard
38
- requirement: &23820080 !ruby/object:Gem::Requirement
39
- none: false
47
+ requirement: !ruby/object:Gem::Requirement
40
48
  requirements:
41
49
  - - ! '>='
42
50
  - !ruby/object:Gem::Version
43
51
  version: 0.7.5
52
+ none: false
44
53
  type: :development
54
+ name: yard
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: 0.7.5
60
+ none: false
45
61
  prerelease: false
46
- version_requirements: *23820080
47
62
  - !ruby/object:Gem::Dependency
48
- name: minitest
49
- requirement: &23819520 !ruby/object:Gem::Requirement
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
50
68
  none: false
69
+ type: :development
70
+ name: redcarpet
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ none: false
77
+ prerelease: false
78
+ - !ruby/object:Gem::Dependency
79
+ requirement: !ruby/object:Gem::Requirement
51
80
  requirements:
52
81
  - - ! '>='
53
82
  - !ruby/object:Gem::Version
54
83
  version: 2.11.4
84
+ none: false
55
85
  type: :development
86
+ name: minitest
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: 2.11.4
92
+ none: false
56
93
  prerelease: false
57
- version_requirements: *23819520
58
94
  - !ruby/object:Gem::Dependency
59
- name: turn
60
- requirement: &23819080 !ruby/object:Gem::Requirement
61
- none: false
95
+ requirement: !ruby/object:Gem::Requirement
62
96
  requirements:
63
97
  - - ! '>='
64
98
  - !ruby/object:Gem::Version
65
99
  version: '0'
100
+ none: false
66
101
  type: :development
102
+ name: turn
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ none: false
67
109
  prerelease: false
68
- version_requirements: *23819080
69
110
  description: IRCSupport provides tools for dealing with the IRC protocol.
70
111
  email:
71
112
  - hinrik.sig@gmail.com
@@ -111,20 +152,23 @@ rdoc_options: []
111
152
  require_paths:
112
153
  - lib
113
154
  required_ruby_version: !ruby/object:Gem::Requirement
114
- none: false
115
155
  requirements:
116
156
  - - ! '>='
117
157
  - !ruby/object:Gem::Version
118
- version: 1.9.1
119
- required_rubygems_version: !ruby/object:Gem::Requirement
158
+ version: 1.9.2
120
159
  none: false
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
161
  requirements:
122
162
  - - ! '>='
123
163
  - !ruby/object:Gem::Version
164
+ hash: 1831730249146677657
124
165
  version: '0'
166
+ segments:
167
+ - 0
168
+ none: false
125
169
  requirements: []
126
170
  rubyforge_project:
127
- rubygems_version: 1.8.10
171
+ rubygems_version: 1.8.24
128
172
  signing_key:
129
173
  specification_version: 3
130
174
  summary: An IRC protocol library