from django.template.loaders import app_directories
from django.template.base import TemplateDoesNotExist
import beard
class Template:
   def __init__(self, source):
       self.template = beard.compile(source)
       
   def render(self, context):
       context_dict = {}
       for d in context.dicts:
           context_dict.update(d)

       return beard.render(self.template, context_dict)
class Loader(app_directories.Loader):
    is_usable = True
    def load_template_source(self, template_name, template_dirs=None):
        if not template_name.endswith('.beard'): raise TemplateDoesNotExist(template_name)
        return super(Loader, self).load_template_source(template_name, template_dirs)
    def load_template(self, template_name, template_dirs=None):
        source, origin = self.load_template_source(template_name, template_dirs)
        template = Template(source)
        return template, origin
