1.1 --- a/moinformat/tree.py Sun Apr 30 01:43:33 2017 +0200
1.2 +++ b/moinformat/tree.py Sun Apr 30 17:59:52 2017 +0200
1.3 @@ -29,13 +29,18 @@
1.4 def append(self, node):
1.5 self.nodes.append(node)
1.6
1.7 + add = append
1.8 +
1.9 append_text = append
1.10
1.11 def empty(self):
1.12 return not self.nodes
1.13
1.14 - def last(self):
1.15 - return self.nodes and self.nodes[-1] or None
1.16 + def node(self, index):
1.17 + try:
1.18 + return self.nodes[index]
1.19 + except IndexError:
1.20 + return None
1.21
1.22 def normalise(self):
1.23
1.24 @@ -86,8 +91,8 @@
1.25 self.indent = indent
1.26 self.type = type
1.27
1.28 - def append(self, node):
1.29 - last = self.last()
1.30 + def add(self, node):
1.31 + last = self.node(-1)
1.32 if last and last.empty():
1.33 self.nodes[-1] = node
1.34 else:
1.35 @@ -124,24 +129,20 @@
1.36
1.37 "A block in the page."
1.38
1.39 - def __init__(self, nodes, final=True):
1.40 - Container.__init__(self, nodes)
1.41 - self.final = final
1.42 -
1.43 def __repr__(self):
1.44 return "Block(%r)" % self.nodes
1.45
1.46 def prettyprint(self, indent=""):
1.47 - l = ["%sBlock: final=%s" % (indent, self.final)]
1.48 + l = ["%sBlock" % indent]
1.49 for node in self.nodes:
1.50 l.append(node.prettyprint(indent + " "))
1.51 return "\n".join(l)
1.52
1.53 def to_string(self, out):
1.54 - out.start_block(self.final)
1.55 + out.start_block()
1.56 for node in self.nodes:
1.57 node.to_string(out)
1.58 - out.end_block(self.final)
1.59 + out.end_block()
1.60
1.61 class Heading(Container):
1.62
1.63 @@ -206,6 +207,19 @@
1.64 def empty(self):
1.65 return False
1.66
1.67 +class Break(Node):
1.68 +
1.69 + "A paragraph break."
1.70 +
1.71 + def __repr__(self):
1.72 + return "Break()"
1.73 +
1.74 + def prettyprint(self, indent=""):
1.75 + return "%sBreak" % indent
1.76 +
1.77 + def to_string(self, out):
1.78 + out.break_()
1.79 +
1.80 class Rule(Node):
1.81
1.82 "A horizontal rule."