summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES24
-rw-r--r--external/rst-directive-old.py77
-rw-r--r--external/rst-directive.py44
3 files changed, 115 insertions, 30 deletions
diff --git a/CHANGES b/CHANGES
index 09f429d7..547488a6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -28,10 +28,10 @@ Version 1.1
* Vala
* Newspeak
-- Fix the LaTeX formatter's output so that output generated for one style
+- Fixed the LaTeX formatter's output so that output generated for one style
can be used with the style definitions of another (#384).
-- Add "anchorlinenos" and "noclobber_cssfile" (#396) options to HTML
+- Added "anchorlinenos" and "noclobber_cssfile" (#396) options to HTML
formatter.
- Support multiline strings in Lua lexer.
@@ -43,27 +43,29 @@ Version 1.1
match the filename, use the analyse_text guessing engine to determine the
winner (#355).
-- Fix minor bugs in the JavaScript lexer (#383), the Matlab lexer (#378),
+- Fixed minor bugs in the JavaScript lexer (#383), the Matlab lexer (#378),
the Scala lexer (#392), the INI lexer (#391), the Clojure lexer (#387)
and the AS3 lexer (#389).
-- Fix three Perl heredoc lexing bugs (#379, #400, #422).
+- Fixed three Perl heredoc lexing bugs (#379, #400, #422).
-- Fix a bug in the image formatter which misdetected lines (#380).
+- Fixed a bug in the image formatter which misdetected lines (#380).
-- Fix bugs lexing extended Ruby strings and regexes.
+- Fixed bugs lexing extended Ruby strings and regexes.
-- Fix a bug when lexing git diffs.
+- Fixed a bug when lexing git diffs.
-- Fix a bug lexing the empty commit in the PHP lexer (#405).
+- Fixed a bug lexing the empty commit in the PHP lexer (#405).
-- Fix a bug causing Python numbers to be mishighlighted as floats (#397).
+- Fixed a bug causing Python numbers to be mishighlighted as floats (#397).
-- Fix a bug when backslashes are used in odd locations in Python (#395)
+- Fixed a bug when backslashes are used in odd locations in Python (#395).
-- Fix various bugs in Matlab and S-Plus lexers, thanks to Winston Chang (#410,
+- Fixed various bugs in Matlab and S-Plus lexers, thanks to Winston Chang (#410,
#411, #413, #414) and fmarc (#419).
+- Added new-style reStructuredText directive for docutils 0.5+ (#428).
+
Version 1.0
-----------
diff --git a/external/rst-directive-old.py b/external/rst-directive-old.py
new file mode 100644
index 00000000..4cd0d501
--- /dev/null
+++ b/external/rst-directive-old.py
@@ -0,0 +1,77 @@
+# -*- coding: utf-8 -*-
+"""
+ The Pygments reStructuredText directive
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ This fragment is a Docutils_ 0.4 directive that renders source code
+ (to HTML only, currently) via Pygments.
+
+ To use it, adjust the options below and copy the code into a module
+ that you import on initialization. The code then automatically
+ registers a ``sourcecode`` directive that you can use instead of
+ normal code blocks like this::
+
+ .. sourcecode:: python
+
+ My code goes here.
+
+ If you want to have different code styles, e.g. one with line numbers
+ and one without, add formatters with their names in the VARIANTS dict
+ below. You can invoke them instead of the DEFAULT one by using a
+ directive option::
+
+ .. sourcecode:: python
+ :linenos:
+
+ My code goes here.
+
+ Look at the `directive documentation`_ to get all the gory details.
+
+ .. _Docutils: http://docutils.sf.net/
+ .. _directive documentation:
+ http://docutils.sourceforge.net/docs/howto/rst-directives.html
+
+ :copyright: Copyright 2006-2009 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+# Options
+# ~~~~~~~
+
+# Set to True if you want inline CSS styles instead of classes
+INLINESTYLES = False
+
+from pygments.formatters import HtmlFormatter
+
+# The default formatter
+DEFAULT = HtmlFormatter(noclasses=INLINESTYLES)
+
+# Add name -> formatter pairs for every variant you want to use
+VARIANTS = {
+ # 'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True),
+}
+
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+
+from pygments import highlight
+from pygments.lexers import get_lexer_by_name, TextLexer
+
+def pygments_directive(name, arguments, options, content, lineno,
+ content_offset, block_text, state, state_machine):
+ try:
+ lexer = get_lexer_by_name(arguments[0])
+ except ValueError:
+ # no lexer found - use the text one instead of an exception
+ lexer = TextLexer()
+ # take an arbitrary option if more than one is given
+ formatter = options and VARIANTS[options.keys()[0]] or DEFAULT
+ parsed = highlight(u'\n'.join(content), lexer, formatter)
+ return [nodes.raw('', parsed, format='html')]
+
+pygments_directive.arguments = (1, 0, 1)
+pygments_directive.content = 1
+pygments_directive.options = dict([(key, directives.flag) for key in VARIANTS])
+
+directives.register_directive('sourcecode', pygments_directive)
diff --git a/external/rst-directive.py b/external/rst-directive.py
index 4cd0d501..998e8d61 100644
--- a/external/rst-directive.py
+++ b/external/rst-directive.py
@@ -3,7 +3,7 @@
The Pygments reStructuredText directive
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This fragment is a Docutils_ 0.4 directive that renders source code
+ This fragment is a Docutils_ 0.5 directive that renders source code
(to HTML only, currently) via Pygments.
To use it, adjust the options below and copy the code into a module
@@ -53,25 +53,31 @@ VARIANTS = {
from docutils import nodes
-from docutils.parsers.rst import directives
+from docutils.parsers.rst import directives, Directive
from pygments import highlight
from pygments.lexers import get_lexer_by_name, TextLexer
-def pygments_directive(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- try:
- lexer = get_lexer_by_name(arguments[0])
- except ValueError:
- # no lexer found - use the text one instead of an exception
- lexer = TextLexer()
- # take an arbitrary option if more than one is given
- formatter = options and VARIANTS[options.keys()[0]] or DEFAULT
- parsed = highlight(u'\n'.join(content), lexer, formatter)
- return [nodes.raw('', parsed, format='html')]
-
-pygments_directive.arguments = (1, 0, 1)
-pygments_directive.content = 1
-pygments_directive.options = dict([(key, directives.flag) for key in VARIANTS])
-
-directives.register_directive('sourcecode', pygments_directive)
+class Pygments(Directive):
+ """ Source code syntax hightlighting.
+ """
+ required_arguments = 1
+ optional_arguments = 0
+ final_argument_whitespace = True
+ option_spec = dict([(key, directives.flag) for key in VARIANTS])
+ has_content = True
+
+ def run(self):
+ self.assert_has_content()
+ try:
+ lexer = get_lexer_by_name(self.arguments[0])
+ except ValueError:
+ # no lexer found - use the text one instead of an exception
+ lexer = TextLexer()
+ # take an arbitrary option if more than one is given
+ formatter = self.options and VARIANTS[self.options.keys()[0]] or DEFAULT
+ parsed = highlight(u'\n'.join(self.content), lexer, formatter)
+ return [nodes.raw('', parsed, format='html')]
+
+directives.register_directive('sourcecode', Pygments)
+