# -*- coding: utf-8 -*-
"""
    Client XSLT parser

    This makes an XML document transformed on the client(i.e. browser) using snXSLT.js

    @copyright: 2006 Yoon, Sang-Min <sixmen@gmail.com>
    @license: GNU GPL, see COPYING for details.
"""

import re

from MoinMoin import config

class Parser:

    def __init__(self, raw, request, **kw):
        self.raw = raw.encode(config.charset)
        self.request = request
        self._ = request.getText

    def format(self, formatter):
        raw = self.raw
        raw = re.sub(r"href=(?P<hmarker>['\"])wiki://Self/(.*)(?P=hmarker)", r"href=\1\2?action=raw\1", raw)
        self.request.write('<textarea style="display:none;" id="xml" rows="10" cols="80">')
        self.request.write(raw.replace('>', '&gt;').replace('<', '&lt;'))
        self.request.write('</textarea>')
        self.request.write('<div id="result"></div>')
        self.request.write("""
<script language="JavaScript" src="http://sixmen.pe.kr/index.cgi/snXSLT.js?action=AttachFile&do=get&target=snXSLT.js"></script>
<script language="JavaScript">
    var xml = document.getElementById('xml').value;
    var div = document.getElementById('result');
    var params = [];
""")
        for i in self.request.form:
            if i=='savetext':
                continue
            self.request.write("params.push('%s');params.push('%s');" % (i, self.request.form[i][0]))
        self.request.write("""
    var mysnXSLT = new snXSLT();
    mysnXSLT.transform(xml,null,params,div);
</script>
""")
