Language: JavaScript
ParseTemplate - Modified version of John Resig's MicroTemplating Engine
/// <script type="text/html" id="script"> /// <div> /// <#= content #> /// <# for(var i=0; i < names.length; i++) { #> /// Name: <#= names[i] #> <br/> /// <# } #> /// </div> /// </script> /// /// var tmpl = $("#itemtemplate").html(); /// var data = { content: "This is some textual content", /// names: ["rick", "markus"] /// }; /// $("#divResult").html(parseTemplate(tmpl, data)); /// /// based on John Resig's Micro Templating engine var _tmplCache = {} this.parseTemplate = function(str, data) { /// <summary> /// Client side template parser that uses <#= #> and <# code #> expressions. /// and # # code blocks for template expansion. /// </summary> /// <param name="str" type="string">The text of the template to expand</param> /// <param name="data" type="var"> /// Any data that is to be merged. Pass an object and /// that object's properties are visible as variables. /// </param> /// <returns type="string" /> var err = ""; try { var func = _tmplCache[str]; if (!func) { var strFunc = "var p=[];with(obj){p.push('" + str.replace(/[\r\t\n]/g, " ") .replace(/'(?=[^#]*#>)/g, "\t") .split("'").join("\\'") .split("\t").join("'") .replace(/<#=(.+?)#>/g, "',$1,'") .split("<#").join("');") .split("#>").join("p.push('") + "');}return p.join('');"; func = new Function("obj", strFunc); _tmplCache[str] = func; } return func(data); } catch (e) { err = e.message; } return "< # ERROR: " + err.htmlEncode() + " # >"; }
Tags:
Description:
This is the latest update of the templating engine I'm using now. Works great.
Report Abuse
Subscribe
Discuss
What's new
What is it
New Snippet
Recent Snippets
My Snippets
Web Code
Search

