1 # -*- coding: utf-8 -*-
4 from docutils.parsers.rst import Directive, directives
5 from docutils import nodes
6 from docutils.statemachine import StringList
7 from sphinx.util.osutil import copyfile
8 from sphinx.util import logging
10 class ShowFileDirective(Directive):
12 Show a file or propose it to download.
16 optional_arguments = 1
18 'language': directives.unchanged
22 # self.assert_has_content()
24 filename = self.arguments[0]
26 if 'language' in self.options:
27 language = self.options['language']
29 logger = logging.getLogger(__name__)
30 # logger.info('showfile {} in {}'.format(filename, language))
34 ' :header: View {}'.format(filename),
36 ' `Download {} <https://framagit.org/simgrid/simgrid/tree/{}>`_'.format(os.path.basename(filename), filename),
38 ' .. literalinclude:: ../../{}'.format(filename),
39 ' :language: {}'.format(language),
43 for idx, line in enumerate(new_content):
44 # logger.info('{} {}'.format(idx,line))
45 self.content.data.insert(idx, line)
46 self.content.items.insert(idx, (None, idx))
48 node = nodes.container()
49 self.state.nested_parse(self.content, self.content_offset, node)
53 app.add_directive('showfile', ShowFileDirective)