1 #!/usr/bin/env python 2 3 """ 4 Prettyprinted HTML document node prettyprinter. 5 6 Copyright (C) 2023 Paul Boddie <paul@boddie.org.uk> 7 8 This program is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free Software 10 Foundation; either version 3 of the License, or (at your option) any later 11 version. 12 13 This program is distributed in the hope that it will be useful, but WITHOUT 14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 16 details. 17 18 You should have received a copy of the GNU General Public License along with 19 this program. If not, see <http://www.gnu.org/licenses/>. 20 """ 21 22 from moinformat.serialisers.pretty.common import Serialiser 23 24 class HTMLSerialiser(Serialiser): 25 26 "Serialisation of prettyprinted document nodes for inspection." 27 28 input_formats = ["html"] 29 formats = ["pretty"] 30 31 def attribute(self, attribute): 32 self.out("%sAttribute: %s" % (self.output.indent, attribute.name)) 33 if attribute.value is not None: 34 self.out("=") 35 self.visit(attribute.value) 36 self.out("\n") 37 38 def attribute_value(self, attribute_value): 39 self.out("%s%s%s" % (attribute_value.quote, attribute_value.value, attribute_value.quote)) 40 41 def element(self, element): 42 self.out("%sElement: name=%r\n" % (self.output.indent, element.name)) 43 self.output.indent += " " 44 for attribute in element.attributes: 45 self.visit(attribute) 46 self.output.indent = self.output.indent[:-2] 47 self.container(element) 48 49 def node(self, node): 50 self.out("%s%s: %r\n" % (self.output.indent, node.__class__.__name__, node.value)) 51 52 comment = node 53 directive = node 54 inclusion = node 55 text = node 56 57 def fragment(self, fragment): 58 self.out("%s%s\n" % (self.output.indent, fragment.__class__.__name__)) 59 self.container(fragment) 60 61 serialiser = HTMLSerialiser 62 63 # vim: tabstop=4 expandtab shiftwidth=4