# -*- coding: utf-8 -*-

import re
from MoinMoin.macro import Include

class Macro:
    def __init__(self, request, formatter):
        self.request = request
        self.form = {}
        self.formatter = formatter

class Parser:
	
    def __init__(self, raw, request, **args):
        self.raw = raw
        self.request = request
    
    def format(self, formatter):
        def handle_match(matchobj):
            page = self.request.page.page_name + '/' + matchobj.group(1)
            return Include.execute(Macro(self.request, formatter), page)
            
        output = re.sub(r'###(.*?)###', handle_match, self.raw)
        
        self.request.write(output)

