class Irc::Casemap

Due to its Scandinavian origins, IRC has strange case mappings, which consider the characters {}|^ as the uppercase equivalents of # []\~.

This is however not the same on all IRC servers: some use standard ASCII casemapping, other do not consider ^ as the uppercase of ~

Public Class Methods

get(name) click to toggle source

Returns the Casemap with the given name

# File lib/rbot/irc.rb, line 86
def Casemap.get(name)
  @@casemaps[name.to_sym][:casemap]
end
new(name, upper, lower) click to toggle source

Create a new casemap with name name, uppercase characters upper and lowercase characters lower

# File lib/rbot/irc.rb, line 74
def initialize(name, upper, lower)
  @key = name.to_sym
  raise "Casemap #{name.inspect} already exists!" if @@casemaps.has_key?(@key)
  @@casemaps[@key] = {
    :upper => upper,
    :lower => lower,
    :casemap => self
  }
end

Public Instance Methods

==(arg) click to toggle source

Two Casemaps are equal if they have the same upper and lower ranges

# File lib/rbot/irc.rb, line 122
def ==(arg)
  other = arg.to_irc_casemap
  return self.upper == other.upper && self.lower == other.lower
end
inspect() click to toggle source

A Casemap is represented by its lower/upper mappings

# File lib/rbot/irc.rb, line 110
def inspect
  self.__to_s__[0..-2] + " #{upper.inspect} ~(#{self})~ #{lower.inspect}>"
end
lower() click to toggle source

Retrieve the 'lowercase characters' of this Casemap

# File lib/rbot/irc.rb, line 98
def lower
  @@casemaps[@key][:lower]
end
must_be(arg) click to toggle source

Give a warning if arg and self are not the same Casemap

# File lib/rbot/irc.rb, line 129
def must_be(arg)
  other = arg.to_irc_casemap
  if self == other
    return true
  else
    warn "Casemap mismatch (#{self.inspect} != #{other.inspect})"
    return false
  end
end
to_irc_casemap() click to toggle source

Return a Casemap based on the receiver

# File lib/rbot/irc.rb, line 104
def to_irc_casemap
  self
end
to_s() click to toggle source

As a String we return our name

# File lib/rbot/irc.rb, line 116
def to_s
  @key.to_s
end
upper() click to toggle source

Retrieve the 'uppercase characters' of this Casemap

# File lib/rbot/irc.rb, line 92
def upper
  @@casemaps[@key][:upper]
end