diff --git a/plugins/__init__.py b/plugins/__init__.py index cdcd66d31..dc4b941c9 100644 --- a/plugins/__init__.py +++ b/plugins/__init__.py @@ -51,6 +51,7 @@ import supybot.utils as utils import supybot.world as world import supybot.ircutils as ircutils import supybot.webutils as webutils +import supybot.callbacks as callbacks try: # We need to sweep away all that mx.* crap because our code doesn't account @@ -350,6 +351,14 @@ class ChannelUserDB(ChannelUserDictionary): return a list (of any type serializable to csv).""" raise NotImplementedError + +## class ChannelIdDatabasePlugin(callbacks.Privmsg): +## def __init__(self): +## # XXX Register configuration variables. +## self.__parent = super(ChannelIdDatabasePlugin, self) +## self.__parent.__init__(self) +## self.db = self.DB() + class PeriodicFileDownloader(object): """A class to periodically download a file/files. @@ -456,56 +465,6 @@ class PeriodicFileDownloader(object): world.threadsSpawned += 1 -def standardSubstitute(irc, msg, text, env=None): - """Do the standard set of substitutions on text, and return it""" - if ircutils.isChannel(msg.args[0]): - channel = msg.args[0] - else: - channel = 'somewhere' - def randInt(): - return str(random.randint(-1000, 1000)) - def randDate(): - t = pow(2,30)*random.random()+time.time()/4.0 - return time.ctime(t) - def randNick(): - if channel != 'somewhere': - L = list(irc.state.channels[channel].users) - if len(L) > 1: - n = msg.nick - while n == msg.nick: - n = random.choice(L) - return n - else: - return msg.nick - else: - return 'someone' - ctime = time.ctime() - localtime = time.localtime() - vars = ircutils.IrcDict({ - 'who': msg.nick, - 'nick': msg.nick, - 'user': msg.user, - 'host': msg.host, - 'channel': channel, - 'botnick': irc.nick, - 'now': ctime, 'ctime': ctime, - 'randnick': randNick, 'randomnick': randNick, - 'randdate': randDate, 'randomdate': randDate, - 'rand': randInt, 'randint': randInt, 'randomint': randInt, - 'today': time.strftime('%d %b %Y', localtime), - 'year': localtime[0], - 'month': localtime[1], - 'monthname': time.strftime('%b', localtime), - 'date': localtime[2], - 'day': time.strftime('%A', localtime), - 'h': localtime[3], 'hr': localtime[3], 'hour': localtime[3], - 'm': localtime[4], 'min': localtime[4], 'minute': localtime[4], - 's': localtime[5], 'sec': localtime[5], 'second': localtime[5], - 'tz': time.tzname[time.daylight], - }) - if env is not None: - vars.update(env) - return utils.perlVariableSubstitute(vars, text) # vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: diff --git a/src/callbacks.py b/src/callbacks.py index a2897431b..e1083f418 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -60,7 +60,6 @@ import supybot.utils as utils import supybot.world as world import supybot.ircdb as ircdb import supybot.irclib as irclib -import supybot.plugins as plugins import supybot.ircmsgs as ircmsgs import supybot.ircutils as ircutils import supybot.registry as registry @@ -428,7 +427,7 @@ class RichReplyMethods(object): s = '%s %s' % (prefix, s) else: s = prefix - return plugins.standardSubstitute(self, self.msg, s) + return ircutils.standardSubstitute(self, self.msg, s) def _getConfig(self, wrapper): return conf.get(wrapper, self.msg.args[0]) diff --git a/src/ircutils.py b/src/ircutils.py index 260aa3ea0..4f699c551 100644 --- a/src/ircutils.py +++ b/src/ircutils.py @@ -39,6 +39,8 @@ __revision__ = "$Id$" import supybot.fix as fix import re +import time +import random import string import textwrap from itertools import imap, ilen @@ -598,6 +600,58 @@ for (k, v) in mircColors.items(): sv = str(v) mircColors[sv] = sv +def standardSubstitute(irc, msg, text, env=None): + """Do the standard set of substitutions on text, and return it""" + if isChannel(msg.args[0]): + channel = msg.args[0] + else: + channel = 'somewhere' + def randInt(): + return str(random.randint(-1000, 1000)) + def randDate(): + t = pow(2,30)*random.random()+time.time()/4.0 + return time.ctime(t) + def randNick(): + if channel != 'somewhere': + L = list(irc.state.channels[channel].users) + if len(L) > 1: + n = msg.nick + while n == msg.nick: + n = random.choice(L) + return n + else: + return msg.nick + else: + return 'someone' + ctime = time.ctime() + localtime = time.localtime() + vars = IrcDict({ + 'who': msg.nick, + 'nick': msg.nick, + 'user': msg.user, + 'host': msg.host, + 'channel': channel, + 'botnick': irc.nick, + 'now': ctime, 'ctime': ctime, + 'randnick': randNick, 'randomnick': randNick, + 'randdate': randDate, 'randomdate': randDate, + 'rand': randInt, 'randint': randInt, 'randomint': randInt, + 'today': time.strftime('%d %b %Y', localtime), + 'year': localtime[0], + 'month': localtime[1], + 'monthname': time.strftime('%b', localtime), + 'date': localtime[2], + 'day': time.strftime('%A', localtime), + 'h': localtime[3], 'hr': localtime[3], 'hour': localtime[3], + 'm': localtime[4], 'min': localtime[4], 'minute': localtime[4], + 's': localtime[5], 'sec': localtime[5], 'second': localtime[5], + 'tz': time.tzname[time.daylight], + }) + if env is not None: + vars.update(env) + return utils.perlVariableSubstitute(vars, text) + + if __name__ == '__main__': import sys, doctest doctest.testmod(sys.modules['__main__'])