mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-26 20:59:27 +01:00
Replace Factoids.factoidPrefix with Factoids.format
Factoids.format makes use of registry.TemplatedString so the user can specify excactly how they want the factoid reply to be formed. Signed-off-by: James Vega <jamessan@users.sourceforge.net>
This commit is contained in:
parent
5af38453a8
commit
4c9efc044b
4
RELNOTES
4
RELNOTES
@ -4,6 +4,10 @@ utils.str.perlVariableSubstitute is deprecated in favor of using Python's
|
|||||||
string.Template directly. perlVariableSubstitute will be removed in a future
|
string.Template directly. perlVariableSubstitute will be removed in a future
|
||||||
release.
|
release.
|
||||||
|
|
||||||
|
Factoids' config variable supybot.plugins.Factoids.factoidPrefix has been
|
||||||
|
replaced by supybot.plugins.Factoids.format, which allows the user to
|
||||||
|
determine exactly how replies to Factoid queries are formatted.
|
||||||
|
|
||||||
|
|
||||||
Version 0.83.4.1
|
Version 0.83.4.1
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
###
|
###
|
||||||
# Copyright (c) 2002-2005, Jeremiah Fincher
|
# Copyright (c) 2002-2005, Jeremiah Fincher
|
||||||
|
# Copyright (c) 2009, James Vega
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
@ -38,6 +39,10 @@ def configure(advanced):
|
|||||||
from supybot.questions import expect, anything, something, yn
|
from supybot.questions import expect, anything, something, yn
|
||||||
conf.registerPlugin('Factoids', True)
|
conf.registerPlugin('Factoids', True)
|
||||||
|
|
||||||
|
class FactoidFormat(registry.TemplatedString):
|
||||||
|
"""Value must include $value, otherwise the factoid's value would be left
|
||||||
|
out."""
|
||||||
|
requiredTemplates = ['value']
|
||||||
|
|
||||||
Factoids = conf.registerPlugin('Factoids')
|
Factoids = conf.registerPlugin('Factoids')
|
||||||
conf.registerChannelValue(Factoids, 'learnSeparator',
|
conf.registerChannelValue(Factoids, 'learnSeparator',
|
||||||
@ -53,9 +58,10 @@ conf.registerChannelValue(Factoids, 'replyWhenInvalidCommand',
|
|||||||
registry.Boolean(True, """Determines whether the bot will reply to invalid
|
registry.Boolean(True, """Determines whether the bot will reply to invalid
|
||||||
commands by searching for a factoid; basically making the whatis
|
commands by searching for a factoid; basically making the whatis
|
||||||
unnecessary when you want all factoids for a given key."""))
|
unnecessary when you want all factoids for a given key."""))
|
||||||
conf.registerChannelValue(Factoids, 'factoidPrefix',
|
conf.registerChannelValue(Factoids, 'format',
|
||||||
registry.StringWithSpaceOnRight('could be ', """Determines the string that
|
FactoidFormat('$key could be $value.', """Determines the format of
|
||||||
factoids will be introduced by."""))
|
the response given when a factoid's value is requested. All the standard
|
||||||
|
substitutes apply, in addition to "$key" for the factoid's key and "$value"
|
||||||
|
for the factoid's value."""))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
@ -164,7 +164,7 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
LIMIT 20""", key)
|
LIMIT 20""", key)
|
||||||
return [t[0] for t in cursor.fetchall()]
|
return [t[0] for t in cursor.fetchall()]
|
||||||
|
|
||||||
def _replyFactoids(self, irc, channel, key, factoids,
|
def _replyFactoids(self, irc, msg, key, factoids,
|
||||||
number=0, error=True):
|
number=0, error=True):
|
||||||
if factoids:
|
if factoids:
|
||||||
if number:
|
if number:
|
||||||
@ -174,17 +174,21 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
irc.error('That\'s not a valid number for that key.')
|
irc.error('That\'s not a valid number for that key.')
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
intro = self.registryValue('factoidPrefix', channel)
|
env = {'key': key}
|
||||||
prefix = format('%q %s', key, intro)
|
def prefixer(v):
|
||||||
|
env['value'] = v
|
||||||
|
formatter = self.registryValue('format', msg.args[0])
|
||||||
|
return ircutils.standardSubstitute(irc, msg,
|
||||||
|
formatter, env)
|
||||||
if len(factoids) == 1:
|
if len(factoids) == 1:
|
||||||
irc.reply(prefix + factoids[0])
|
irc.reply(prefixer(factoids[0]))
|
||||||
else:
|
else:
|
||||||
factoidsS = []
|
factoidsS = []
|
||||||
counter = 1
|
counter = 1
|
||||||
for factoid in factoids:
|
for factoid in factoids:
|
||||||
factoidsS.append(format('(#%i) %s', counter, factoid))
|
factoidsS.append(format('(#%i) %s', counter, factoid))
|
||||||
counter += 1
|
counter += 1
|
||||||
irc.replies(factoidsS, prefixer=prefix,
|
irc.replies(factoidsS, prefixer=prefixer,
|
||||||
joiner=', or ', onlyPrefixFirst=True)
|
joiner=', or ', onlyPrefixFirst=True)
|
||||||
elif error:
|
elif error:
|
||||||
irc.error('No factoid matches that key.')
|
irc.error('No factoid matches that key.')
|
||||||
@ -195,7 +199,7 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
if self.registryValue('replyWhenInvalidCommand', channel):
|
if self.registryValue('replyWhenInvalidCommand', channel):
|
||||||
key = ' '.join(tokens)
|
key = ' '.join(tokens)
|
||||||
factoids = self._lookupFactoid(channel, key)
|
factoids = self._lookupFactoid(channel, key)
|
||||||
self._replyFactoids(irc, channel, key, factoids, error=False)
|
self._replyFactoids(irc, msg, key, factoids, error=False)
|
||||||
|
|
||||||
def whatis(self, irc, msg, args, channel, words):
|
def whatis(self, irc, msg, args, channel, words):
|
||||||
"""[<channel>] <key> [<number>]
|
"""[<channel>] <key> [<number>]
|
||||||
@ -212,7 +216,7 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
irc.errorInvalid('key id')
|
irc.errorInvalid('key id')
|
||||||
key = ' '.join(words)
|
key = ' '.join(words)
|
||||||
factoids = self._lookupFactoid(channel, key)
|
factoids = self._lookupFactoid(channel, key)
|
||||||
self._replyFactoids(irc, channel, key, factoids, number)
|
self._replyFactoids(irc, msg, key, factoids, number)
|
||||||
whatis = wrap(whatis, ['channel', many('something')])
|
whatis = wrap(whatis, ['channel', many('something')])
|
||||||
|
|
||||||
def lock(self, irc, msg, args, channel, key):
|
def lock(self, irc, msg, args, channel, key):
|
||||||
|
Loading…
Reference in New Issue
Block a user