Add filename option to code-block

Prepend the given filename to the code block
This commit is contained in:
M. Nasimul Haque 2013-09-26 00:56:16 +01:00
parent 445bb5daec
commit 05ba0766b3
10 changed files with 96 additions and 0 deletions

View File

@ -57,6 +57,7 @@ class CodeBlock(Directive):
option_spec = {
'linenos': directives.flag,
'emphasize-lines': directives.unchanged_required,
'filename': directives.unchanged_required,
}
def run(self):
@ -75,6 +76,9 @@ class CodeBlock(Directive):
literal = nodes.literal_block(code, code)
literal['language'] = self.arguments[0]
filename = self.options.get('filename')
if filename:
literal['filename'] = filename
literal['linenos'] = 'linenos' in self.options
if hl_lines is not None:
literal['highlight_args'] = {'hl_lines': hl_lines}

View File

@ -462,3 +462,17 @@ div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}
div.code-block-filename {
background-color: #ddd;
color: #333;
padding: 2px 5px;
font-family: monospace;
font-size: small;
}
div.code-block-filename + pre,
div.code-block-filename + div.highlight,
div.code-block-filename + div.highlight > pre {
margin-top: 0;
}

View File

@ -308,3 +308,16 @@ div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}
div.code-block-filename {
background-color: #1c4e63;
color: #efefef;
padding: 2px 5px;
font-family: monospace;
font-size: small;
}
div.code-block-filename + pre,
div.code-block-filename + div.highlight > pre {
margin-top: 0;
}

View File

@ -369,3 +369,7 @@ div.viewcode-block:target {
margin: -1px -10px;
padding: 0 12px;
}
div.code-block-filename {
font-family: monospace;
}

View File

@ -243,3 +243,17 @@ div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}
div.code-block-filename {
background-color: #ddd;
color: #222;
border: 1px solid #C6C9CB;
padding: 2px 5px;
font-family: monospace;
font-size: small;
}
div.code-block-filename + pre,
div.code-block-filename + div.highlight > pre {
margin-top: 0;
}

View File

@ -340,3 +340,16 @@ tt.xref {
font-weight: normal;
font-style: normal;
}
div.code-block-filename {
background-color: #ddd;
color: #222;
padding: 2px 5px;
font-family: monospace;
font-size: small;
}
div.code-block-filename + pre,
div.code-block-filename + div.highlight > pre {
margin-top: 0;
}

View File

@ -337,3 +337,17 @@ div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}
div.code-block-filename {
background-color: #ddd;
color: #222;
border: 1px solid #ccc;
padding: 2px 5px;
font-family: monospace;
font-size: small;
}
div.code-block-filename + pre,
div.code-block-filename + div.highlight > pre {
margin-top: 0;
}

View File

@ -702,3 +702,15 @@ div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
div.code-block-filename {
background-color: #cceeff;
padding: 2px 5px;
font-family: monospace;
font-size: small;
}
div.code-block-filename + pre,
div.code-block-filename + div.highlight > pre {
margin-top: 0;
}

View File

@ -256,6 +256,9 @@ class HTMLTranslator(BaseTranslator):
**highlight_args)
starttag = self.starttag(node, 'div', suffix='',
CLASS='highlight-%s' % lang)
if node.has_key('filename'):
starttag += '<div class="code-block-filename">%s</div>' % (
node['filename'],)
self.body.append(starttag + highlighted + '</div>\n')
raise nodes.SkipNode

View File

@ -1333,6 +1333,11 @@ class LaTeXTranslator(nodes.NodeVisitor):
highlight_args['force'] = True
if 'linenos' in node:
linenos = node['linenos']
filename = node.get('filename')
if filename:
self.body.append('\n{\\colorbox[rgb]{0.9,0.9,0.9}'
'{\\makebox[\\textwidth][l]'
'{\\small\\texttt{%s}}}}\n' % (filename,))
def warner(msg):
self.builder.warn(msg, (self.curfilestack[-1], node.line))
hlcode = self.highlighter.highlight_block(code, lang, warn=warner,