#YZ JavaScript Django Template Compiler
#Copyright (c) 2010 Weiss I Nicht <*****@*****.**> 
#(sha-1: 90f01291285340bf03c2d41952c4b21b3d338907)
from client_templates import BaseJsFilter, JsProcessorRegistry

class HashJsFilter(BaseJsFilter):
    """
    Converts the "hash" filter in django templates to native javascript hash look up, 
    i.e. {{exampleVar|hash:varB}}
    Examples:
    >>> from client_templates import TemplateJsNode,JsTplSettings
    >>> from client_templates.customfilters import *
    >>> JsTplSettings.CONFIG['VERSAGER_MODE'] = False
    >>> ###############
    >>> #test django "hash" filter
    >>> ###############
    >>> js_tpl = TemplateJsNode('{% load hash %}Dict var1 with hash varB{{ varA|hash:varB }}')
    >>> js_tpl.render()
    u'function(varA,varB){return "Dict var1 with hash varB"+varA[varB]}'
    """
    expected_filter_funcname = 'hash'
    
    def render(self):
        return '%s[%s]' % (self.expr, self.arg)

JsProcessorRegistry.register_js_filter(HashJsFilter)
#YZ JavaScript Django Template Compiler
#Copyright (c) 2010 Weiss I Nicht <*****@*****.**> 
#(sha-1: 90f01291285340bf03c2d41952c4b21b3d338907)
from client_templates import BaseJsFilter, JsProcessorRegistry

class DefaultJsFilter(BaseJsFilter):
    """
    Converts the "default" filter in django templates to javascript expression
    i.e. {{exampleVar|default:"default value"}}
    Examples:
    >>> from client_templates import TemplateJsNode,JsTplSettings
    >>> JsTplSettings.CONFIG['VERSAGER_MODE'] = False     
    >>> ###############
    >>> #test django "default" filter
    >>> ###############
    >>> js_tpl = TemplateJsNode('Default value text: {{testVar|default:"default val"}}')
    >>> js_tpl.render()
    u'function(testVar){return "Default value text: "+yzdjs_default(testVar,"default val")}'
    """
    expected_filter_funcname = 'default'
    js_func_name             = 'yzdjs_default'
    file_path                = __file__

JsProcessorRegistry.register_js_filter(DefaultJsFilter)
#YZ JavaScript Django Template Compiler
#Copyright (c) 2010 Weiss I Nicht <*****@*****.**> 
#(sha-1: 90f01291285340bf03c2d41952c4b21b3d338907)
from client_templates import BaseJsFilter, JsProcessorRegistry

class AddJsFilter(BaseJsFilter):
    """
    Converts the "add" filter in django templates to native javascript expression, 
    i.e. {{exampleVar|add:"2"}}
    Examples:
    >>> from client_templates import TemplateJsNode,JsTplSettings
    >>> JsTplSettings.CONFIG['VERSAGER_MODE'] = False
    >>> ###############
    >>> #test django "add" filter
    >>> ###############
    >>> js_tpl = TemplateJsNode('1 + 1 = {{ 1|add:"1" }}')
    >>> js_tpl.render()
    u'function(){return "1 + 1 = "+(1+1)}'
    >>> js_tpl = TemplateJsNode('{{ 1|add:"1" }}')
    >>> js_tpl.render()
    u'function(){return (1+1)}'
    """
    expected_filter_funcname = 'add'
    
    def render(self):
        return '(%s)' % '+'.join(self.js_func_params)

JsProcessorRegistry.register_js_filter(AddJsFilter)