#! /usr/bin/env python # Copyright (c) 2007-2008 PediaPress GmbH # See README.txt for additional licensing information. """usable/user parser""" from mwlib import parser, scanner, expander def simplify(node): "concatenates textnodes in order to reduce the number of objects" Text = parser.Text last = None toremove = [] for i,c in enumerate(node.children): if c.__class__ == Text: # would isinstance be safe? if last: last.caption += c.caption toremove.append(i) else: last = c else: simplify(c) last = None for i,ii in enumerate(toremove): del node.children[ii-i] def fixlitags(node): Text = parser.Text if not isinstance(node, parser.ItemList): idx = 0 while idx < len(node.children): if isinstance(node.children[idx], parser.Item): lst = parser.ItemList() lst.append(node.children[idx]) node.children[idx] = lst idx += 1 while idx