diff options
author | Matth?us G. Chajdas <dev@anteru.net> | 2019-11-10 13:56:53 +0100 |
---|---|---|
committer | Matth?us G. Chajdas <dev@anteru.net> | 2019-11-10 13:56:53 +0100 |
commit | 1dd3124a9770e11b6684e5dd1e6bc15a0aa3bc67 (patch) | |
tree | 87a171383266dd1f64196589af081bc2f8e497c3 /external/moin-parser.py | |
parent | f1c080e184dc1bbc36eaa7cd729ff3a499de568a (diff) | |
download | pygments-master.tar.gz |
Diffstat (limited to 'external/moin-parser.py')
-rw-r--r-- | external/moin-parser.py | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/external/moin-parser.py b/external/moin-parser.py deleted file mode 100644 index 4e74447f..00000000 --- a/external/moin-parser.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -""" - The Pygments MoinMoin Parser - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - This is a MoinMoin parser plugin that renders source code to HTML via - Pygments; you need Pygments 0.7 or newer for this parser to work. - - To use it, set the options below to match your setup and put this file in - the data/plugin/parser subdirectory of your Moin instance, and give it the - name that the parser directive should have. For example, if you name the - file ``code.py``, you can get a highlighted Python code sample with this - Wiki markup:: - - {{{ - #!code python - [...] - }}} - - Additionally, if you set ATTACHMENTS below to True, Pygments will also be - called for all attachments for whose filenames there is no other parser - registered. - - You are responsible for including CSS rules that will map the Pygments CSS - classes to colors. You can output a stylesheet file with `pygmentize`, put - it into the `htdocs` directory of your Moin instance and then include it in - the `stylesheets` configuration option in the Moin config, e.g.:: - - stylesheets = [('screen', '/htdocs/pygments.css')] - - If you do not want to do that and are willing to accept larger HTML - output, you can set the INLINESTYLES option below to True. - - :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -# Options -# ~~~~~~~ - -# Set to True if you want to highlight attachments, in addition to -# {{{ }}} blocks. -ATTACHMENTS = True - -# Set to True if you want inline CSS styles instead of classes -INLINESTYLES = False - - -import sys - -from pygments import highlight -from pygments.lexers import get_lexer_by_name, get_lexer_for_filename, TextLexer -from pygments.formatters import HtmlFormatter -from pygments.util import ClassNotFound - - -# wrap lines in <span>s so that the Moin-generated line numbers work -class MoinHtmlFormatter(HtmlFormatter): - def wrap(self, source, outfile): - for line in source: - yield 1, '<span class="line">' + line[1] + '</span>' - -htmlformatter = MoinHtmlFormatter(noclasses=INLINESTYLES) -textlexer = TextLexer() -codeid = [0] - - -class Parser: - """ - MoinMoin Pygments parser. - """ - if ATTACHMENTS: - extensions = '*' - else: - extensions = [] - - Dependencies = [] - - def __init__(self, raw, request, **kw): - self.raw = raw - self.req = request - if "format_args" in kw: - # called from a {{{ }}} block - try: - self.lexer = get_lexer_by_name(kw['format_args'].strip()) - except ClassNotFound: - self.lexer = textlexer - return - if "filename" in kw: - # called for an attachment - filename = kw['filename'] - else: - # called for an attachment by an older moin - # HACK: find out the filename by peeking into the execution - # frame which might not always work - try: - frame = sys._getframe(1) - filename = frame.f_locals['filename'] - except: - filename = 'x.txt' - try: - self.lexer = get_lexer_for_filename(filename) - except ClassNotFound: - self.lexer = textlexer - - def format(self, formatter): - codeid[0] += 1 - id = "pygments_%s" % codeid[0] - w = self.req.write - w(formatter.code_area(1, id, start=1, step=1)) - w(formatter.rawHTML(highlight(self.raw, self.lexer, htmlformatter))) - w(formatter.code_area(0, id)) |