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.output.directory import DirectoryOutput 24 from moinformat.serialisers.manifest import serialisers 25 from moinformat.serialisers.moin.moin import MoinSerialiser 26 from os.path import curdir 27 28 # Top-level functions. 29 30 def get_serialiser(name): 31 32 "Return the main serialiser class for the format having the given 'name'." 33 34 return serialisers["%s.moin" % name] 35 36 def make_serialiser(name, output=None, linker=None): 37 38 """ 39 Return a serialiser instance for the format having the given 'name'. 40 41 The optional 'output' context is used to control where separate resources 42 are stored, with the default being the current directory. 43 44 The optional 'linker' is used to control which linking scheme is used with 45 the serialiser, with the default having the same name as the serialiser. 46 """ 47 48 output = output or DirectoryOutput(curdir) 49 linker = linker or make_linker(name, "") 50 return get_serialiser(name)(output, serialisers, linker) 51 52 def serialise(doc, serialiser=None): 53 54 """ 55 Serialise 'doc' using the given 'serialiser' instance or the Moin serialiser 56 if omitted. 57 """ 58 59 if not serialiser: 60 output = DirectoryOutput(curdir) 61 serialiser = MoinSerialiser(output, serialisers) 62 63 doc.to_string(serialiser) 64 return serialiser.get_output() 65 66 # vim: tabstop=4 expandtab shiftwidth=4