from django import template
from django.conf import settings

class PyFormatNode(template.Node):
    def __init__(self, variable, format_str):
        self.variable = variable
        self.format_str = format_str

    def render(self, context):
        try:
            var = self.variable.resolve(context)
            format = self.format_str.resolve(context)
            return format % var
        except:
            if settings.TEMPLATE_DEBUG:
                raise
            return ''

def do_pyformat(parser, token):
    tag_name, variable, format_str = token.split_contents()
    return PyFormatNode(parser.compile_filter(variable), 
                        parser.compile_filter(format_str),
                        )

register = template.Library()
register.tag('pyformat', do_pyformat)