1 #!/usr/bin/env python 2 3 """ 4 Moin wiki serialisers. 5 6 Copyright (C) 2017, 2018 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.links import make_linker 23 from moinformat.serialisers.manifest import serialisers 24 from moinformat.serialisers.moin.moin import MoinSerialiser 25 26 # Top-level functions. 27 28 def get_serialiser(name): 29 30 "Return the main serialiser class for the format having the given 'name'." 31 32 return serialisers["%s.moin" % name] 33 34 def make_serialiser(name, linker=None): 35 36 """ 37 Return a serialiser instance for the format having the given 'name'. 38 39 The optional 'linker' is used to control which linking scheme is used with 40 the serialiser, with the default having the same name as the serialiser. 41 """ 42 43 linker = linker or make_linker(name, "") 44 return get_serialiser(name)(formats=serialisers, linker=linker) 45 46 def serialise(doc, serialiser=None): 47 48 """ 49 Serialise 'doc' using the given 'serialiser' instance or the Moin serialiser 50 if omitted. 51 """ 52 53 l = [] 54 serialiser = serialiser or MoinSerialiser(formats=serialisers) 55 serialiser.out = l.append 56 doc.to_string(serialiser) 57 return "".join(l) 58 59 # vim: tabstop=4 expandtab shiftwidth=4