Add analytics
[bus.git] / busui / owa / modules / base / js / owa.template.js
blob:a/busui/owa/modules/base/js/owa.template.js -> blob:b/busui/owa/modules/base/js/owa.template.js
--- a/busui/owa/modules/base/js/owa.template.js
+++ b/busui/owa/modules/base/js/owa.template.js
@@ -1,1 +1,48 @@
+OWA.template = function(options) {
 
+	if (options) {
+		this.options = options;
+	}
+}
+
+OWA.template.prototype = {
+	
+	/**
+	 * Template cache
+	 */
+	_tmplCache = {},
+	
+	/**
+     * Client side template parser that uses <#= #> and <# code #> expressions.
+     * and # # code blocks for template expansion.
+     *    
+     * @param  str string The text of the template to expand</param>    
+     * @param  data mixed Any javascript variable that is to be merged.  
+     * @return string  
+     */
+	parseTemplate = function(str, data) {
+	
+	    var err = "";
+	    try {
+	        var func = this._tmplCache[str];
+	        if (!func) {
+	            var strFunc = "var p=[],print=function(){p.push.apply(p,arguments);};" + 
+	            			  "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('');";
+				               
+	            //alert(strFunc);
+	            func = new Function("obj", strFunc);
+	            this._tmplCache[str] = func;
+	        }
+	        return func(data);
+	    } catch (e) { err = e.message; }
+	    return "< # ERROR: " + err.htmlEncode() + " # >";
+	}
+}