Class: Cakewalk::ISupport
- Inherits:
-
Hash
- Object
- Hash
- Cakewalk::ISupport
- Defined in:
- lib/cakewalk/isupport.rb
Overview
This class exposes parsed ISUPPORT information of the IRC network.
Constant Summary collapse
- @@mappings =
{ %w[PREFIX] => lambda {|v| modes, prefixes = v.match(/^\((.+)\)(.+)$/)[1..2] h = {} modes.split("").each_with_index do |c, i| h[c] = prefixes[i] end h }, %w[CHANTYPES] => lambda {|v| v.split("")}, %w[CHANMODES] => lambda {|v| h = {} h["A"], h["B"], h["C"], h["D"] = v.split(",").map {|l| l.split("")} h }, %w[MODES MAXCHANNELS NICKLEN MAXBANS TOPICLEN KICKLEN CHANNELLEN CHIDLEN SILENCE AWAYLEN MAXTARGETS WATCH MONITOR] => lambda {|v| v.to_i}, %w[CHANLIMIT MAXLIST IDCHAN] => lambda {|v| h = {} v.split(",").each do |pair| args, num = pair.split(":") args.split("").each do |arg| h[arg] = num.to_i end end h }, %w[TARGMAX] => lambda {|v| h = {} v.split(",").each do |pair| name, value = pair.split(":") h[name] = value.to_i end h }, %w[NETWORK] => lambda {|v| v}, %w[STATUSMSG] => lambda {|v| v.split("")}, %w[CASEMAPPING] => lambda {|v| v.to_sym}, %w[ELIST] => lambda {|v| v.split("")}, # TODO STD }
Instance Method Summary collapse
-
#initialize(*args) ⇒ ISupport
constructor
A new instance of ISupport.
-
#parse(*options)
private
Constructor Details
#initialize(*args) ⇒ ISupport
Returns a new instance of ISupport.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/cakewalk/isupport.rb', line 52 def initialize(*args) super # by setting most numeric values to "Infinity", we let the # server truncate messages and lists while at the same time # allowing the use of strictness=:strict for servers that don't # support ISUPPORT (hopefully none, anyway) self["PREFIX"] = {"o" => "@", "v" => "+"} self["CHANTYPES"] = ["#"] self["CHANMODES"] = { "A" => ["b"], "B" => ["k"], "C" => ["l"], "D" => %w[i m n p s t r] } self["MODES"] = 1 self["NICKLEN"] = Float::INFINITY self["MAXBANS"] = Float::INFINITY self["TOPICLEN"] = Float::INFINITY self["KICKLEN"] = Float::INFINITY self["CHANNELLEN"] = Float::INFINITY self["CHIDLEN"] = 5 self["AWAYLEN"] = Float::INFINITY self["MAXTARGETS"] = 1 self["MAXCHANNELS"] = Float::INFINITY # deprecated self["CHANLIMIT"] = {"#" => Float::INFINITY} self["STATUSMSG"] = [] self["CASEMAPPING"] = :rfc1459 self["ELIST"] = [] self["MONITOR"] = 0 end |
Instance Method Details
#parse(*options)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/cakewalk/isupport.rb', line 86 def parse(*) .each do |option| name, value = option.split("=") if value proc = @@mappings.find {|key, _| key.include?(name)} self[name] = (proc && proc[1].call(value)) || value else self[name] = true end end end |