Created
August 14, 2011 19:54
-
-
Save Apkawa/1145236 to your computer and use it in GitHub Desktop.
extending rst2html converter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
""" | |
The Pygments reStructuredText directive | |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
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 | |
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-2011 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 = True | |
#change style. default used dark style "vim". | |
STYLE = 'vim' | |
from pygments.formatters import HtmlFormatter | |
# The default formatter | |
DEFAULT = HtmlFormatter(noclasses=INLINESTYLES, style=STYLE) | |
# 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, Directive | |
from pygments import highlight | |
from pygments.lexers import get_lexer_by_name, TextLexer | |
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')] | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
''' | |
Read html from stdin and get html from div.document | |
''' | |
import sys | |
import re | |
DOCUMENT_RE = re.compile(r'<div class="document">(.*)</div>', re.DOTALL) | |
src = sys.stdin.read() | |
result = re.findall(DOCUMENT_RE, src)[0] | |
print result |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
#wrapper script | |
python2 rst2html_v2.py ${1} |python2 formatted.py |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2 | |
# $Id: rst2html.py 4564 2006-05-21 20:44:42Z wiemann $ | |
# Author: David Goodger <[email protected]> | |
# Copyright: This module has been placed in the public domain. | |
""" | |
A minimal front end to the Docutils Publisher, producing HTML. | |
COPY FILE AND IS PATCHED FOR USE Pygments. | |
Usage: python2 rst2html_mod.py input.rst [outfile.html] | |
""" | |
try: | |
import locale | |
locale.setlocale(locale.LC_ALL, '') | |
except: | |
pass | |
from docutils.core import publish_cmdline, default_description | |
from docutils.parsers.rst.directives import register_directive | |
from code_directive import Pygments | |
register_directive('code', Pygments) | |
description = ('Generates (X)HTML documents from standalone reStructuredText ' | |
'sources. ' + default_description) | |
publish_cmdline(writer_name='html', description=description) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment