Class: Irc::Casemap
Overview
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 ~
Direct Known Subclasses
Constant Summary collapse
- @@casemaps =
{}
Class Method Summary collapse
-
.get(name) ⇒ Object
Returns the Casemap with the given name.
Instance Method Summary collapse
-
#==(arg) ⇒ Object
Two Casemaps are equal if they have the same upper and lower ranges.
-
#initialize(name, upper, lower) ⇒ Casemap
constructor
Create a new casemap with name name, uppercase characters upper and lowercase characters lower.
-
#inspect ⇒ Object
A Casemap is represented by its lower/upper mappings.
-
#lower ⇒ Object
Retrieve the ‘lowercase characters’ of this Casemap.
-
#must_be(arg) ⇒ Object
Give a warning if arg and self are not the same Casemap.
-
#to_irc_casemap ⇒ Object
Return a Casemap based on the receiver.
-
#to_s ⇒ Object
As a String we return our name.
-
#upper ⇒ Object
Retrieve the ‘uppercase characters’ of this Casemap.
Constructor Details
#initialize(name, upper, lower) ⇒ Casemap
Create a new casemap with name name, uppercase characters upper and lowercase characters lower
74 75 76 77 78 79 80 81 82 |
# 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 |
Class Method Details
Instance Method Details
#==(arg) ⇒ Object
Two Casemaps are equal if they have the same upper and lower ranges
122 123 124 125 |
# 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 ⇒ Object
A Casemap is represented by its lower/upper mappings
110 111 112 |
# File 'lib/rbot/irc.rb', line 110 def inspect self.__to_s__[0..-2] + " #{upper.inspect} ~(#{self})~ #{lower.inspect}>" end |
#lower ⇒ Object
Retrieve the ‘lowercase characters’ of this Casemap
98 99 100 |
# File 'lib/rbot/irc.rb', line 98 def lower @@casemaps[@key][:lower] end |
#must_be(arg) ⇒ Object
Give a warning if arg and self are not the same Casemap
129 130 131 132 133 134 135 136 137 |
# 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 ⇒ Object
Return a Casemap based on the receiver
104 105 106 |
# File 'lib/rbot/irc.rb', line 104 def to_irc_casemap self end |
#to_s ⇒ Object
As a String we return our name
116 117 118 |
# File 'lib/rbot/irc.rb', line 116 def to_s @key.to_s end |
#upper ⇒ Object
Retrieve the ‘uppercase characters’ of this Casemap
92 93 94 |
# File 'lib/rbot/irc.rb', line 92 def upper @@casemaps[@key][:upper] end |