diff --git a/SupyML/plugin.py b/SupyML/plugin.py index 9e5b665..041ccfe 100644 --- a/SupyML/plugin.py +++ b/SupyML/plugin.py @@ -96,6 +96,8 @@ class SupyMLParser: return self._processLoop(node, proxify) elif node.nodeName == 'if': return self._processId(node, proxify) + elif node.nodeName == 'var': + return self._processVar(node, proxify) output = node.nodeName + ' ' for childNode in node.childNodes: if childNode.__class__ == minidom.Text: @@ -105,9 +107,11 @@ class SupyMLParser: value = self._run(str(output), proxify) return value - def _processLoop(self, node): + def _processLoop(self, node, proxify=True): raise NotImplemented - def _processIf(self, node): + def _processIf(self, node, proxify=True): + raise NotImplemented + def _processVar(self, node, proxify=True): raise NotImplemented class SupyML(callbacks.Plugin): diff --git a/SupyML/test.py b/SupyML/test.py index f1d335e..5541fbe 100644 --- a/SupyML/test.py +++ b/SupyML/test.py @@ -32,7 +32,7 @@ import time from supybot.test import * class SupyMLTestCase(ChannelPluginTestCase): - plugins = ('SupyML', 'Utilities') + plugins = ('SupyML', 'Utilities', 'Conditional') ################################# # Utilities def _getIfAnswerIsEqual(self, msg): @@ -44,17 +44,34 @@ class SupyMLTestCase(ChannelPluginTestCase): m = self.irc.takeMsg() return False - _tell = 'ProgVal foo' def testBasic(self): self.assertError('SupyML eval') self.assertResponse('SupyML eval foo', 'foo') - msg = ircmsgs.privmsg(self.channel, '@SupyML eval %s' % self._tell, + msg = ircmsgs.privmsg(self.channel, '@SupyML eval ' \ + 'ProgVal foo', prefix=self.prefix) self.irc.feedMsg(msg) answer = ircmsgs.IrcMsg(prefix="", command="PRIVMSG", args=('ProgVal', 'test wants me to tell you: foo')) self.failIf(self._getIfAnswerIsEqual(answer) == False) + def testNoMoreThanOneAnswer(self): + self.assertResponse('SupyML eval foo' + 'bar', + 'foobar') + + def testVar(self): + self.assertResponse('SupyML eval foobar' + 'foo', + 'bar') + + def testWhile(self): + self.assertResponse('SupyML eval ' + 'foo1' + 'foo 5' + 'bar', + 'bar'*5) + # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: