mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-27 05:09:23 +01:00
Use the ircutils.standardSubsitute function upon factoid output.
This allows inclusion of the usual standardSubstitute vars within factoids. There is no config to disable this, since it is possible to escape the substitutions by simply doubling the dollar signs, as per the python documentation: http://docs.python.org/library/string.html#template-strings Thus, if you want a factoid to output a literal "$channel", for example, all you'd need to do is use "$$channel" in your factoid text, which will come out as "$channel" when said by the bot. Also added tests for this new behavior.
This commit is contained in:
parent
8ed94257ba
commit
b12d8a8a04
@ -245,7 +245,8 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
|
||||
if factoids:
|
||||
if number:
|
||||
try:
|
||||
irc.reply(factoids[number-1][0])
|
||||
irc.reply(ircutils.standardSubstitute(irc, msg,
|
||||
factoids[number-1][0]))
|
||||
self._updateRank(channel, [factoids[number-1]])
|
||||
except IndexError:
|
||||
irc.error(_('That\'s not a valid number for that key.'))
|
||||
@ -258,12 +259,15 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
|
||||
return ircutils.standardSubstitute(irc, msg,
|
||||
formatter, env)
|
||||
if len(factoids) == 1:
|
||||
irc.reply(prefixer(factoids[0][0]))
|
||||
irc.reply(ircutils.standardSubstitute(irc, msg,
|
||||
prefixer(factoids[0][0])))
|
||||
else:
|
||||
factoidsS = []
|
||||
counter = 1
|
||||
for factoid in factoids:
|
||||
factoidsS.append(format('(#%i) %s', counter, factoid[0]))
|
||||
factoidsS.append(format('(#%i) %s', counter,
|
||||
ircutils.standardSubstitute(irc, msg,
|
||||
factoid[0])))
|
||||
counter += 1
|
||||
irc.replies(factoidsS, prefixer=prefixer,
|
||||
joiner=', or ', onlyPrefixFirst=True)
|
||||
|
@ -174,6 +174,14 @@ class FactoidsTestCase(ChannelPluginTestCase):
|
||||
self.assertNotError('learn foob as barb')
|
||||
self.assertRegexp('whatis foom', 'foo.*foob')
|
||||
|
||||
def testStandardSubstitute(self):
|
||||
self.assertNotError('learn foo as this is $channel, and hour is $hour')
|
||||
self.assertRegexp('whatis foo', 'this is #test, and hour is \d{1,2}')
|
||||
self.assertNotError('learn bar as this is $$channel escaped')
|
||||
self.assertRegexp('whatis bar', 'this is \$channel')
|
||||
self.assertNotError('learn bar as this is $minute')
|
||||
self.assertRegexp('whatis bar', '\$channel.*\d{1,2}')
|
||||
|
||||
def testAlias(self):
|
||||
self.assertNotError('learn foo as bar')
|
||||
self.assertNotError('alias foo zoog')
|
||||
|
Loading…
Reference in New Issue
Block a user