$.define("ejs", "lang",function(){
var
_startOfHTML = "\t__views.push(",
_endOfHTML = ");\n",
sRight = "&>",
rLeft = /\s*<&\s*/,
rRight = /\s*&>\s*/,
rAt = /(^|[^\w\u00c0-\uFFFF_])(@)(?=\w)/g,
rLastSemi = /[,;]\s*$/
var ejs2 = $.ejs = function(id,data){
data = data || {};
if( !ejs2[id] ){
var rleft = rLeft,
rright = rRight,
sright = sRight,
rlastSemi = rLastSemi,
startOfHTML = _startOfHTML,
endOfHTML = _endOfHTML, str , logic,
el = (id);
if (!el) throw "can not find the target element";
str = ;
var arr = ().split(rleft),
buff = ["var __views = [];\n"],temp = [],i = 0,n = ,els,segment;
while(i < n){//Analyze line by line to prevent ambiguity
segment = arr[i++];
els = (rright);
if( ~(sright) ){//Not used here === 2 is to avoid IE's split bug
switch ( els[0].charAt(0) ) {
case "="://processes variables returned by the background (output to the page);
logic = els[0].substring(1);
if(("@")!==-1){
( startOfHTML, (rAt,"$1data.").replace(rlastSemi,''), endOfHTML );
}else{
( startOfHTML, (rlastSemi,''), endOfHTML );
}
break;
case "#"://process comments
break;
default://processing logic
logic = els[0];
if(("@")!==-1){
( (rAt,"$1data."), "\n" );
}else{
( logic, "\n" );
}
}
// Handle static HTML fragments
els[1] && (startOfHTML, $.quote( els[1] ), endOfHTML)
}else{
// Handle static HTML fragments
(startOfHTML, $.quote( els[0] ), endOfHTML );
}
}
ejs2[id] = new Function("data",(temp).join("")+';return __views.join("");');
return ejs2[id]( data )
}
return ejs2[id]( data )
}
})
// ejs v9!