From d8f14c9e5528e2c4a46fb7a5f48662783faff396 Mon Sep 17 00:00:00 2001 From: "Martin A. Brown" Date: Fri, 4 Mar 2016 17:10:30 -0800 Subject: [PATCH] initial support for asciidoc format --- tldp/doctypes/asciidoc.py | 91 ++++++++++++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 11 deletions(-) diff --git a/tldp/doctypes/asciidoc.py b/tldp/doctypes/asciidoc.py index f97ab3f..87127d6 100644 --- a/tldp/doctypes/asciidoc.py +++ b/tldp/doctypes/asciidoc.py @@ -1,9 +1,15 @@ #! /usr/bin/python # -*- coding: utf8 -*- -import logging +from __future__ import absolute_import, division, print_function -from tldp.doctypes.common import BaseDoctype +import os +import logging +import networkx as nx + +from tldp.utils import which +from tldp.utils import arg_isexecutable, isexecutable +from tldp.doctypes.common import BaseDoctype, depends logger = logging.getLogger(__name__) @@ -12,19 +18,82 @@ class Asciidoc(BaseDoctype): formatname = 'AsciiDoc' extensions = ['.txt'] signatures = [] - tools = ['asciidoc', 'a2x'] - def create_txt(self): - logger.info("Creating txt for %s", self.source.stem) + required = {'linuxdoc_sgml2html': isexecutable, + 'linuxdoc_html2text': isexecutable, + 'linuxdoc_htmldoc': isexecutable, + } - def create_pdf(self): - logger.info("Creating PDF for %s", self.source.stem) + graph = nx.DiGraph() - def create_html(self): - logger.info("Creating chunked HTML for %s", self.source.stem) + def chdir_output(self): + os.chdir(self.output.dirname) + return True - def create_htmls(self): - logger.info("Creating single page HTML for %s", self.source.stem) + @depends(graph, chdir_output) + def copy_static_resources(self): + source = list() + for d in ('images', 'resources'): + fullpath = os.path.join(self.source.dirname, d) + fullpath = os.path.abspath(fullpath) + if os.path.isdir(fullpath): + source.append('"' + fullpath + '"') + if not source: + logger.debug("%s no images or resources to copy", + self.source.stem) + return True + s = 'rsync --archive --verbose %s ./' % (' '.join(source)) + return self.shellscript(s) + + @depends(graph, chdir_output) + def make_name_pdf(self): + s = '''"{config.asciidoc_a2x}" \\ + --verbose \\ + --format pdf \\ + --destination-dir . \\ + "{source.filename}"''' + return self.shellscript(s) + + @depends(graph, chdir_output) + def make_name_txt(self): + s = 'cp --verbose --target-directory . -- "{source.filename}"' + return self.shellscript(s) + + @depends(graph, chdir_output) + def make_name_htmls(self): + s = '''"{config.asciidoc_a2x}" \\ + --verbose \\ + --format xhtml \\ + --destination-dir . \\ + "{source.filename}"''' + return self.shellscript(s) + + @depends(graph, chdir_output) + def make_chunked_html(self): + s = '''"{config.asciidoc_a2x}" \\ + --verbose \\ + --format chunked \\ + --destination-dir . \\ + "{source.filename}"''' + return self.shellscript(s) + + @depends(graph, make_chunked_html) + def move_chunked_html(self): + s = 'mv --no-clobber -v -- {output.stem}.chunked html' + return self.shellscript(s) + + @depends(graph, move_chunked_html) + def make_name_html(self): + s = 'ln -sv --relative -- html/index.html {output.name_indexhtml}' + return self.shellscript(s) + + @classmethod + def argparse(cls, p): + descrip = 'executables and data files for %s' % (cls.formatname,) + g = p.add_argument_group(title=cls.__name__, description=descrip) + g.add_argument('--asciidoc-a2x', type=arg_isexecutable, + default=which('a2x'), + help='full path to a2x [%(default)s]') # # -- end of file