"ExternalEdit Moinmoin action module"

# imports
import re
from MoinMoin.Page import Page



class MMapHandler:
    def __init__(self, pagename):
        self.pagename = pagename
    # end def

    def handle_request(self, request):
        self.request = request
        # use Page to get raw text
        self.page = Page(request, self.pagename)
        self.emit_mmap()

    def emit_mmap(self):
            headers = ['Content-Type: text/html',
                       'Pragma: no-cache']
            
            ## use regex to find first <map>...</map> section in {{{#!freemind parser section }}}
            body = self.page.get_raw_body()

            p = re.compile('\{\{\{\s*#!freemind\s*(<map.*</map>)\s*\}\}\}', re.DOTALL)
            s = p.search (body)

            if (s == None):
                mapText = "<map>" "</map>\n"
            else :
                mapText = s.group(1) + "\n"
            
            headers.append('Content-Length: %s' % len(mapText))
            
            ## send headers and map
            self.request.http_headers(headers)
            self.request.write(mapText)
            self.request.no_closing_html_code = True
        

def execute(pagename, request):
    handler = MMapHandler(pagename)
    handler.handle_request(request)


# end def
        
