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: