Source code for bravo.utilities.chat

# vim: set fileencoding=utf8 :

"""
Colorizers.
"""

chat_colors = [
    u"§0", # black
    u"§1", # dark blue
    u"§2", # dark green
    u"§3", # dark cyan
    u"§4", # dark red
    u"§5", # dark magenta
    u"§6", # dark orange
    u"§7", # gray
    u"§8", # dark gray
    u"§9", # blue
    u"§a", # green
    u"§b", # cyan
    u"§c", # red
    u"§d", # magenta
    u"§e", # yellow
]

console_colors = {
    u"§0": "\x1b[1;30m", # black        -> bold black
    u"§1": "\x1b[34m",   # dark blue    -> blue
    u"§2": "\x1b[32m",   # dark green   -> green
    u"§3": "\x1b[36m",   # dark cyan    -> cyan
    u"§4": "\x1b[31m",   # dark red     -> red
    u"§5": "\x1b[35m",   # dark magenta -> magenta
    u"§6": "\x1b[33m",   # dark orange  -> yellow
    u"§7": "\x1b[1;37m", # gray         -> bold white
    u"§8": "\x1b[37m",   # dark gray    -> white
    u"§9": "\x1b[1;34m", # blue         -> bold blue
    u"§a": "\x1b[1;32m", # green        -> bold green
    u"§b": "\x1b[1;36m", # cyan         -> bold cyan
    u"§c": "\x1b[1;31m", # red          -> bold red
    u"§d": "\x1b[1;35m", # magenta      -> bold magenta
    u"§e": "\x1b[1;33m", # yellow       -> bold yellow
}

def chat_name(s):
    return "%s%s%s" % (
        chat_colors[hash(s) % len(chat_colors)], s, u"§f"
    )

def fancy_console_name(s):
    return "%s%s%s" % (
        console_colors[chat_colors[hash(s) % len(chat_colors)]],
        s,
        '\x1b[0m'
    )

[docs]def sanitize_chat(s): """ Verify that the given chat string is safe to send to Notchian recepients. """ # Check for Notchian bug: Color controls can't be at the end of the # message. if len(s) > 1 and s[-2] == u"§": s = s[:-2] return s
[docs]def username_alternatives(n): """ Permute a username through several common alternative-finding algorithms. """ # First up: The Woll Smoth. This is largely for comedy, and also to # appease my Haskell/Erlang side. w = reduce(lambda x, y: unicode.replace(x, y, "o"), "aeiu", n) yield reduce(lambda x, y: unicode.replace(x, y, "O"), "AEIU", w) # Try prefixes and suffixes of ~, which a reliable source (kingnerd on # #mcdevs) tells me is not legal in registered nicks. *Somebody* will get # filtered by this. yield "~%s" % n yield "%s~" % n # And the IRC traditional underscore... yield "_%s" % n yield "%s_" % n # Now for some more inventive things. Say you have hundreds of "Player"s # running around; what do you do? Well, it's time for numbers. for i in range(100): yield "%s%d" % (n, i) # And that's it for now. If you really have this many players with the # same name, maybe you should announce "Stop logging on as # 'Sephiroth'" and see if they listen. >:3

Project Versions

This Page