1 #!/usr/bin/env python 2 3 """ 4 HTML serialiser. 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.common import Serialiser 23 24 25 26 # The serialiser class. 27 28 class HTMLSerialiser(Serialiser): 29 30 "Serialisation of HTML fragments." 31 32 input_formats = ["html"] 33 formats = ["html"] 34 35 def attribute(self, attribute): 36 self.out(attribute.name) 37 if attribute.value is not None: 38 self.out("=") 39 self.visit(attribute.value) 40 41 def attribute_value(self, attribute_value): 42 self.out("%s%s%s" % (attribute_value.quote, attribute_value.value, attribute_value.quote)) 43 44 def element(self, element): 45 self.out("<%s" % element.name) 46 for attribute in element.attributes: 47 self.out(" ") 48 self.visit(attribute) 49 self.out(">") 50 self.container(element) 51 self.out("</%s>" % element.name) 52 53 def comment(self, comment): 54 self.out("<%s>" % comment.value) 55 56 def directive(self, directive): 57 self.out("<%s>" % directive.value) 58 59 def inclusion(self, inclusion): 60 self.out("<%s>" % inclusion.value) 61 62 def node(self, node): 63 self.out(node.value) 64 65 text = node 66 67 def fragment(self, fragment): 68 self.container(fragment) 69 70 serialiser = HTMLSerialiser 71 72 # vim: tabstop=4 expandtab shiftwidth=4