summaryrefslogtreecommitdiff
path: root/sphinx/directives/code.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/directives/code.py')
-rw-r--r--sphinx/directives/code.py17
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,