--- a/pvl/dhcp/config.py Mon Mar 02 01:24:48 2015 +0200
+++ b/pvl/dhcp/config.py Mon Mar 02 01:29:56 2015 +0200
@@ -121,7 +121,7 @@
return ' '.join(self.key)
def __repr__ (self):
- return "Block({self.key!r}, items={self.items!r}, blocks={self.blocks!r}".format(self=self)
+ return "Block({self.key!r}, items={self.items!r}, blocks={self.blocks!r})".format(self=self)
class DHCPConfigParser (object):
"""
@@ -138,7 +138,7 @@
Parse an complete file, returning the top-level Block.
>>> DHCPConfigParser.load(['foo;', 'bar {', '\tasdf "quux";', '}'], name='test')
- Block(None, items=[('foo', )], blocks=[Block(('bar', ), items=[('asdf', 'quux')], blocks=[])])
+ Block(None, items=[('foo',)], blocks=[Block(('bar',), items=[('asdf', 'quux')], blocks=[])])
"""
if name is None:
@@ -155,7 +155,10 @@
raise
if parser.token:
- raise DHCPConfError(parser, "Trailing data: {token}".format(token=token), line=lineno)
+ raise DHCPConfError(parser, "Trailing data: {token}".format(token=parser.token), line=lineno)
+
+ if parser.stack:
+ raise DHCPConfError(parser, "Unterminated block: {stack}".format(stack=parser.stack), line=lineno)
return parser.block
@@ -218,9 +221,9 @@
log.debug("open block: %s > %s", self.block, block)
+ self.stack.append(self.block)
self.block.blocks.append(block)
self.block = block
- self.stack.append(block)
# must be within block!
elif token == 'item' :