Sha256: d907578796a7922f694f1db860677e84157d358fd33a1088c8e67c819aa560d3

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

#!/usr/bin/env python

"""A small wrapper file for parsing ReST files at GitHub."""

__author__ = "Jannis Leidel"
__copyright__ = "Copyright (C) 2008 Jannis Leidel"
__license__ = "Public Domain"
__version__ = "0.1"

try:
    import locale
    locale.setlocale(locale.LC_ALL, '')
except:
    pass

import sys
import codecs

from docutils.core import publish_parts
from docutils.writers.html4css1 import Writer, HTMLTranslator

SETTINGS = {
    'cloak_email_addresses': True,
    'file_insertion_enabled': False,
    'raw_enabled': False,
    'strip_comments': True,
    'doctitle_xform': False,
    'report_level': 5,
    'syntax_highlight' : 'none',
    'math_output' : 'latex'
}

class GitHubHTMLTranslator(HTMLTranslator):
    def visit_literal_block(self, node):
        classes = node.attributes['classes']
        if len(classes) >= 2 and classes[0] == 'code':
            language = classes[1]
            del classes[:]
            self.body.append(self.starttag(node, 'pre', lang=language))
        else:
            super(self, node)

def main():
    """
    Parses the given ReST file or the redirected string input and returns the
    HTML body.

    Usage: rest2html < README.rst
           rest2html README.rst
    """
    try:
        text = codecs.open(sys.argv[1], 'r', 'utf-8').read()
    except IOError: # given filename could not be found
        return ''
    except IndexError: # no filename given
        text = sys.stdin.read()

    writer = Writer()
    writer.translator_class = GitHubHTMLTranslator

    parts = publish_parts(text, writer=writer, settings_overrides=SETTINGS)
    if 'html_body' in parts:
        html = parts['html_body']
        return html.encode('utf-8')
    return ''

if __name__ == '__main__':
    print main()

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
github-markup-0.7.3 lib/github/commands/rest2html