diff options
-rw-r--r-- | docs/extensions/code_hilite.txt | 11 | ||||
-rw-r--r-- | docs/release-2.6.txt | 12 | ||||
-rw-r--r-- | markdown/extensions/codehilite.py | 17 | ||||
-rw-r--r-- | tests/test_extensions.py | 11 |
4 files changed, 43 insertions, 8 deletions
diff --git a/docs/extensions/code_hilite.txt b/docs/extensions/code_hilite.txt index c775df7..92f8c12 100644 --- a/docs/extensions/code_hilite.txt +++ b/docs/extensions/code_hilite.txt @@ -31,7 +31,7 @@ language. When that fails, the code block will display as un-highlighted code. [documentation]: http://pygments.org/docs !!! Note - The css and/or javascript is not included as part of this extension + The css and/or JavaScript is not included as part of this extension but must be provided by the end user. The Pygments project provides default css styles which you may find to be a useful starting point. @@ -165,3 +165,12 @@ The following options are provided to configure the output: * **`noclasses`**: Use inline styles instead of CSS classes. Defaults to `False`. + +* **`use_pygments`**: + Defaults to `True`. Set to `False` to disable the use of Pygments. + If a language is defined for a code block, it will be assigned to the + `<code>` tag as a class in the manner suggested by the [HTML5 spec][spec] + (alternate output will not be entertained) and might be used by a JavaScript + library in the browser to highlight the code block. + +[spec]: http://www.w3.org/TR/html5/text-level-semantics.html#the-code-element diff --git a/docs/release-2.6.txt b/docs/release-2.6.txt index 783837e..030d890 100644 --- a/docs/release-2.6.txt +++ b/docs/release-2.6.txt @@ -202,6 +202,18 @@ worked on PyPy for some time, it is now officially supported and tested on PyPy. [TOC]: extensions/toc.html +* The [CodeHilite][ch] Extension has gained a new config option: `use_pygments`. + The option is `True` by default, however, it allows one to turn off Pygments code + highlighting (set to `False`) while preserving the language detection features of + the extension. Note that Pygments language detection is not used as that would 'use + Pygments`. If a language is defined for a code block, it will be assigned to the + `<code>` tag as a class in the manner suggested by the [HTML5 spec][spec] + (alternate output will not be entertained) and might be used by a JavaScript + library in the browser to highlight the code block. + +[ch]: extensions/code_hilite.html +[spec]: http://www.w3.org/TR/html5/text-level-semantics.html#the-code-element + * Test coverage has been improved including running [flake8]. While those changes will not directly effect end users, the code is being better tested which will benefit everyone. diff --git a/markdown/extensions/codehilite.py b/markdown/extensions/codehilite.py index f1e51f9..0657c37 100644 --- a/markdown/extensions/codehilite.py +++ b/markdown/extensions/codehilite.py @@ -75,7 +75,7 @@ class CodeHilite(object): def __init__(self, src=None, linenums=None, guess_lang=True, css_class="codehilite", lang=None, style='default', - noclasses=False, tab_length=4, hl_lines=None): + noclasses=False, tab_length=4, hl_lines=None, use_pygments=True): self.src = src self.lang = lang self.linenums = linenums @@ -85,6 +85,7 @@ class CodeHilite(object): self.noclasses = noclasses self.tab_length = tab_length self.hl_lines = hl_lines or [] + self.use_pygments = use_pygments def hilite(self): """ @@ -102,7 +103,7 @@ class CodeHilite(object): if self.lang is None: self._parseHeader() - if pygments: + if pygments and self.use_pygments: try: lexer = get_lexer_by_name(self.lang) except ValueError: @@ -211,7 +212,8 @@ class HiliteTreeprocessor(Treeprocessor): css_class=self.config['css_class'], style=self.config['pygments_style'], noclasses=self.config['noclasses'], - tab_length=self.markdown.tab_length + tab_length=self.markdown.tab_length, + use_pygments=self.config['use_pygments'] ) placeholder = self.markdown.htmlStash.store(code.hilite(), safe=True) @@ -231,9 +233,6 @@ class CodeHiliteExtension(Extension): self.config = { '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", @@ -244,7 +243,11 @@ class CodeHiliteExtension(Extension): '(Colorscheme) - Default: default'], 'noclasses': [False, 'Use inline styles instead of CSS classes - ' - 'Default false'] + 'Default false'], + 'use_pygments': [True, + 'Use Pygments to Highlight code blocks. ' + 'Disable if using a JavaScript library. ' + 'Default: True'] } super(CodeHiliteExtension, self).__init__(*args, **kwargs) diff --git a/tests/test_extensions.py b/tests/test_extensions.py index 6642921..6a57878 100644 --- a/tests/test_extensions.py +++ b/tests/test_extensions.py @@ -226,6 +226,17 @@ class TestCodeHilite(unittest.TestCase): '#line 3</code></pre>' ) + def testUsePygmentsFalse(self): + text = '\t:::Python\n\t# A Code Comment' + md = markdown.Markdown( + extensions=[markdown.extensions.codehilite.CodeHiliteExtension(use_pygments=False)] + ) + self.assertEqual( + md.convert(text), + '<pre class="codehilite"><code class="language-python"># A Code Comment' + '</code></pre>' + ) + class TestFencedCode(unittest.TestCase): """ Test fenced_code extension. """ |