diff options
Diffstat (limited to 'markdown/extensions/codehilite.py')
-rw-r--r-- | markdown/extensions/codehilite.py | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/markdown/extensions/codehilite.py b/markdown/extensions/codehilite.py index bab8c6f..fd8e2f4 100644 --- a/markdown/extensions/codehilite.py +++ b/markdown/extensions/codehilite.py @@ -21,6 +21,7 @@ Dependencies: """ import markdown +import warnings try: from pygments import highlight from pygments.lexers import get_lexer_by_name, guess_lexer, TextLexer @@ -40,7 +41,8 @@ class CodeHilite: * src: Source string or any object with a .readline attribute. - * linenos: (Boolean) Turn line numbering 'on' or 'off' (off by default). + * linenums: (Boolean) Set line numbering to 'on' (True), 'off' (False) or 'auto'(None). + Set to 'auto' by default. * guess_lang: (Boolean) Turn language auto-detection 'on' or 'off' (on by default). @@ -54,12 +56,12 @@ class CodeHilite: """ - def __init__(self, src=None, linenos=False, guess_lang=True, + def __init__(self, src=None, linenums=None, guess_lang=True, css_class="codehilite", lang=None, style='default', noclasses=False, tab_length=4): self.src = src self.lang = lang - self.linenos = linenos + self.linenums = linenums self.guess_lang = guess_lang self.css_class = css_class self.style = style @@ -93,7 +95,7 @@ class CodeHilite: lexer = TextLexer() except ValueError: lexer = TextLexer() - formatter = HtmlFormatter(linenos=self.linenos, + formatter = HtmlFormatter(linenos=self.linenums, cssclass=self.css_class, style=self.style, noclasses=self.noclasses) @@ -107,7 +109,7 @@ class CodeHilite: classes = [] if self.lang: classes.append('language-%s' % self.lang) - if self.linenos: + if self.linenums: classes.append('linenums') class_str = '' if classes: @@ -153,9 +155,9 @@ class CodeHilite: if m.group('path'): # path exists - restore first line lines.insert(0, fl) - if m.group('shebang'): - # shebang exists - use line numbers - self.linenos = True + if self.linenums is None and m.group('shebang'): + # Overridable and Shebang exists - use line numbers + self.linenums = True else: # No match lines.insert(0, fl) @@ -175,7 +177,7 @@ class HiliteTreeprocessor(markdown.treeprocessors.Treeprocessor): children = block.getchildren() if len(children) == 1 and children[0].tag == 'code': code = CodeHilite(children[0].text, - linenos=self.config['force_linenos'], + linenums=self.config['linenums'], guess_lang=self.config['guess_lang'], css_class=self.config['css_class'], style=self.config['pygments_style'], @@ -197,7 +199,8 @@ class CodeHiliteExtension(markdown.Extension): def __init__(self, configs): # define default configs self.config = { - 'force_linenos' : [False, "Force line numbers - Default: False"], + 'linenums': [None, "Use lines numbers. True=yes, False=no, None=auto"], + 'force_linenos' : [False, "Depreciated! Use 'linenums' instead. Force line numbers - Default: False"], 'guess_lang' : [True, "Automatic language detection - Default: True"], 'css_class' : ["codehilite", "Set class name for wrapper <div> - Default: codehilite"], @@ -210,6 +213,16 @@ class CodeHiliteExtension(markdown.Extension): # convert strings to booleans if value == 'True': value = True if value == 'False': value = False + if value == 'None': value = None + + if key == 'force_linenos': + warnings.warn('The "force_linenos" config setting' + ' to the CodeHilite extension is deprecrecated.' + ' Use "linenums" instead.', PendingDeprecationWarning) + if value: + # Carry 'force_linenos' over to new 'linenos'. + self.setConfig('linenums', True) + self.setConfig(key, value) def extendMarkdown(self, md, md_globals): |