diff options
Diffstat (limited to 'sphinx/directives/code.py')
-rw-r--r-- | sphinx/directives/code.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py index daab0fb1e..a3e32be12 100644 --- a/sphinx/directives/code.py +++ b/sphinx/directives/code.py @@ -56,6 +56,7 @@ class CodeBlock(Directive): final_argument_whitespace = False option_spec = { 'linenos': directives.flag, + 'dedent': int, 'lineno-start': int, 'emphasize-lines': directives.unchanged_required, 'filename': directives.unchanged_required, @@ -74,6 +75,15 @@ class CodeBlock(Directive): return [document.reporter.warning(str(err), line=self.lineno)] else: hl_lines = None + + if 'dedent' in self.options: + linesArray = code.split('\n') + for i in range(0, len(linesArray)): + if len(linesArray[i]) <= self.options['dedent']: + linesArray[i] = linesArray[i][len(linesArray[i]) - 1:] + else: + linesArray[i] = linesArray[i][self.options['dedent']:] + code = '\n'.join(linesArray) literal = nodes.literal_block(code, code) literal['language'] = self.arguments[0] @@ -103,6 +113,7 @@ class LiteralInclude(Directive): optional_arguments = 0 final_argument_whitespace = True option_spec = { + 'dedent': int, 'linenos': directives.flag, 'lineno-start': int, 'tab-width': int, @@ -138,6 +149,12 @@ class LiteralInclude(Directive): f = codecs.StreamReaderWriter(open(filename, 'rb'), codec_info[2], codec_info[3], 'strict') lines = f.readlines() + if 'dedent' in self.options: + for i in range(0, len(lines)): + if len(lines[i]) <= self.options['dedent']: + lines[i] = lines[i][len(lines[i]) - 1:] + else: + lines[i] = lines[i][self.options['dedent']:] except (IOError, OSError): return [document.reporter.warning( 'Include file %r not found or reading it failed' % filename, |