ircsupport 0.1.0 → 0.2.0

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