#moinmoin 1.5 plugin
#pygment based parser 
#example:
#1) install pygments from pygments.pocoo.com 
#2) put pygment.py to $moin_dir/data/plugin/parser/ dir
#3) post on wiki some shit as:
#{{{#!pygment sql
#select * from db..table ;
#}}}
# for print all supported lexer use:
#python -c 'import pygments.lexers, pprint;pprint.pprint(pygments.lexers.LEXERS)'
#
#copyright: 2006 by slav0nic (slav0nic.xss.ru)
#license: GNU GPL, see http://www.gnu.org/licenses/gpl for details

from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter

class Parser:

    def __init__(self, raw, request, **kw):
        self.raw = raw
        self.request = request
        self.kw = kw

    def format(self, formatter):
        html_formatter =  HtmlFormatter()
        try:
                lexer = get_lexer_by_name(self.kw["format_args"].strip())
        except ValueError:
                lexer = get_lexer_by_name('text')
        self.request.write(formatter.rawHTML("".join(('\n<style type="text/css">',
                html_formatter.get_style_defs(), '</style>\n', 
                highlight(self.raw, lexer, html_formatter)))))

