Added the `prepend and append` options to the

``literalinclude`` directive.
This commit is contained in:
Georg Brandl 2009-06-04 17:57:58 +02:00
parent ebcf18d9c3
commit fb0791bdfc
5 changed files with 26 additions and 2 deletions

View File

@ -1,6 +1,9 @@
Release 1.0 (in development) Release 1.0 (in development)
============================ ============================
* Added the ``prepend`` and ``append`` options to the
``literalinclude`` directive.
* Added the ``latex_docclass`` config value and made the "twoside" * Added the ``latex_docclass`` config value and made the "twoside"
documentclass option overridable by "oneside". documentclass option overridable by "oneside".

View File

@ -143,11 +143,17 @@ Includes
string option, only lines that precede the first lines containing that string string option, only lines that precede the first lines containing that string
are included. are included.
You can prepend and/or append a line to the included code, using the
``prepend`` and ``append`` option, respectively. This is useful e.g. for
highlighting PHP code that doesn't include the ``<?php``/``?>`` markers.
.. versionadded:: 0.4.3 .. versionadded:: 0.4.3
The ``encoding`` option. The ``encoding`` option.
.. versionadded:: 0.6 .. versionadded:: 0.6
The ``pyobject``, ``lines``, ``start-after`` and ``end-before`` options, The ``pyobject``, ``lines``, ``start-after`` and ``end-before`` options,
as well as support for absolute filenames. as well as support for absolute filenames.
.. versionadded:: 1.0
The ``prepend`` and ``append`` options.
.. rubric:: Footnotes .. rubric:: Footnotes

View File

@ -87,6 +87,8 @@ class LiteralInclude(Directive):
'lines': directives.unchanged_required, 'lines': directives.unchanged_required,
'start-after': directives.unchanged_required, 'start-after': directives.unchanged_required,
'end-before': directives.unchanged_required, 'end-before': directives.unchanged_required,
'prepend': directives.unchanged_required,
'append': directives.unchanged_required,
} }
def run(self): def run(self):
@ -144,7 +146,9 @@ class LiteralInclude(Directive):
lines = [lines[i] for i in linelist] lines = [lines[i] for i in linelist]
startafter = self.options.get('start-after') startafter = self.options.get('start-after')
endbefore = self.options.get('end-before') endbefore = self.options.get('end-before')
prepend = self.options.get('prepend')
append = self.options.get('append')
if startafter is not None or endbefore is not None: if startafter is not None or endbefore is not None:
use = not startafter use = not startafter
res = [] res = []
@ -158,6 +162,11 @@ class LiteralInclude(Directive):
res.append(line) res.append(line)
lines = res lines = res
if prepend:
lines.insert(0, prepend + '\n')
if append:
lines.append(append + '\n')
text = ''.join(lines) text = ''.join(lines)
retnode = nodes.literal_block(text, text, source=fn) retnode = nodes.literal_block(text, text, source=fn)
retnode.line = 1 retnode.line = 1

View File

@ -37,6 +37,10 @@ Literalinclude options
:start-after: coding: utf-8 :start-after: coding: utf-8
:end-before: class Foo :end-before: class Foo
.. cssclass:: inc-preappend
.. literalinclude:: literal.inc
:prepend: START CODE
:append: END CODE
Testing downloadable files Testing downloadable files
========================== ==========================

View File

@ -43,7 +43,7 @@ ENV_WARNINGS = """\
http://www.python.org/logo.png http://www.python.org/logo.png
%(root)s/includes.txt:: (WARNING/2) Encoding 'utf-8-sig' used for reading \ %(root)s/includes.txt:: (WARNING/2) Encoding 'utf-8-sig' used for reading \
included file u'wrongenc.inc' seems to be wrong, try giving an :encoding: option included file u'wrongenc.inc' seems to be wrong, try giving an :encoding: option
%(root)s/includes.txt:56: WARNING: download file not readable: nonexisting.png %(root)s/includes.txt:60: WARNING: download file not readable: nonexisting.png
""" """
HTML_WARNINGS = ENV_WARNINGS + """\ HTML_WARNINGS = ENV_WARNINGS + """\
@ -134,6 +134,8 @@ if pygments:
r'^class Foo:\n pass\nclass Bar:\n$', r'^class Foo:\n pass\nclass Bar:\n$',
".//div[@class='inc-startend highlight-text']/div/pre": ".//div[@class='inc-startend highlight-text']/div/pre":
ur'^foo = u"Including Unicode characters: üöä"\n$', ur'^foo = u"Including Unicode characters: üöä"\n$',
".//div[@class='inc-preappend highlight-text']/div/pre":
r'(?m)^START CODE$',
}) })
HTML_XPATH['subdir/includes.html'].update({ HTML_XPATH['subdir/includes.html'].update({
".//pre/span": 'line 1', ".//pre/span": 'line 1',