Source code for irc.strings

from jaraco.text import FoldedCase


[docs]class IRCFoldedCase(FoldedCase): """ A version of FoldedCase that honors the IRC specification for lowercased strings (RFC 1459). >>> IRCFoldedCase('Foo^').lower() 'foo~' >>> IRCFoldedCase('[this]') == IRCFoldedCase('{THIS}') True >>> IRCFoldedCase('[This]').casefold() '{this}' >>> IRCFoldedCase().lower() '' """ translation = dict( zip( map(ord, r"[]\^"), map(ord, r"{}|~"), ) )
[docs] def lower(self): return super().lower().translate(self.translation)
[docs] def casefold(self): """ Ensure cached superclass value doesn't supersede. >>> ob = IRCFoldedCase('[This]') >>> ob.casefold() '{this}' >>> ob.casefold() '{this}' """ return super().casefold().translate(self.translation)
def __setattr__(self, key, val): if key == 'casefold': return return super().__setattr__(key, val)
[docs]def lower(str): return IRCFoldedCase(str).lower()