MoinLight

moinformat/serialisers/__init__.py

100:cd1788f92058
2018-07-29 Paul Boddie Introduced output contexts for more general handling of serialised content. Simplified the instantiation of new serialisers when encountering different region formats.
     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