1/*! JsRender v1.0pre: http://github.com/BorisMoore/jsrender */ 2(function(global,jQuery,undefined){"use strict";if(jQuery&&jQuery.views||global.jsviews){return} 3var versionNumber="v1.0pre",$,jsvStoreName,rTag,rTmplString,delimOpenChar0="{",delimOpenChar1="{",delimCloseChar0="}",delimCloseChar1="}",linkChar="^",rPath=/^(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g,rParams=/(\()(?=\s*\()|(?:([([])\s*)?(?:([#~]?[\w$.^]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*!:?\/]|(=))\s*|([#~]?[\w$.^]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*((\))(?=\s*\.|\s*\^)|\)|\])([([]?))|(\s+)/g,rNewLine=/\s*\n/g,rUnescapeQuotes=/\\(['"])/g,rEscapeQuotes=/([\\'"])/g,rBuildHash=/\x08(~)?([^\x08]+)\x08/g,rTestElseIf=/^if\s/,rFirstElem=/<(\w+)[>\s]/,rPrevElem=/<(\w+)[^>\/]*>[^>]*$/,rAttrEncode=/[><"'&]/g,rHtmlEncode=/[><"'&]/g,autoTmplName=0,viewId=0,charEntities={"&":"&","<":"<",">":">","\x00":"�","'":"'",'"':"""},tmplAttr="data-jsv-tmpl",slice=[].slice,$render={},jsvStores={template:{compile:compileTmpl},tag:{compile:compileTag},helper:{},converter:{}},$views={jsviews:versionNumber,render:$render,settings:{delimiters:$viewsDelimiters,debugMode:!0,tryCatch:!0},sub:{View:View,Error:JsViewsError,tmplFn:tmplFn,parse:parseParams,extend:$extend,error:error,syntaxError:syntaxError},_cnvt:convertVal,_tag:renderTag,_err:function(e){return $viewsSettings.debugMode?("Error: "+(e.message||e))+". ":''}};function JsViewsError(message,object){if(object&&object.onError){if(object.onError(message)===!1){return}} 4this.name="JsRender Error";this.message=message||"JsRender error"} 5function $extend(target,source){var name;target=target||{};for(name in source){target[name]=source[name]} 6return target}(JsViewsError.prototype=new Error()).constructor=JsViewsError;function $viewsDelimiters(openChars,closeChars,link){if(!$viewsSub.rTag||arguments.length){delimOpenChar0=openChars?openChars.charAt(0):delimOpenChar0;delimOpenChar1=openChars?openChars.charAt(1):delimOpenChar1;delimCloseChar0=closeChars?closeChars.charAt(0):delimCloseChar0;delimCloseChar1=closeChars?closeChars.charAt(1):delimCloseChar1;linkChar=link||linkChar;openChars="\\"+delimOpenChar0+"(\\"+linkChar+")?\\"+delimOpenChar1;closeChars="\\"+delimCloseChar0+"\\"+delimCloseChar1;rTag="(?:(?:(\\w+(?=[\\/\\s\\"+delimCloseChar0+"]))|(?:(\\w+)?(:)|(>)|!--((?:[^-]|-(?!-))*)--|(\\*)))"+"\\s*((?:[^\\"+delimCloseChar0+"]|\\"+delimCloseChar0+"(?!\\"+delimCloseChar1+"))*?)";$viewsSub.rTag=rTag+")";rTag=new RegExp(openChars+rTag+"(\\/)?|(?:\\/(\\w+)))"+closeChars,"g");rTmplString=new RegExp("<.*>|([^\\\\]|^)[{}]|"+openChars+".*"+closeChars)} 7return[delimOpenChar0,delimOpenChar1,delimCloseChar0,delimCloseChar1,linkChar]} 8function getView(inner,type){if(!type){type=inner;inner=undefined} 9var views,i,l,found,view=this,root=!type||type==="root";if(inner){found=view.type===type?view:undefined;if(!found){views=view.views;if(view._.useKey){for(i in views){if(found=views[i].get(inner,type)){break}}}else for(i=0,l=views.length;!found&&i<l;i++){found=views[i].get(inner,type)}}}else if(root){while(view.parent.parent){found=view=view.parent}}else while(view&&!found){found=view.type===type?view:undefined;view=view.parent} 10return found} 11function getIndex(){var view=this.get("item");return view?view.index:undefined} 12getIndex.depends=function(){return[this.get("item"),"index"]};function getHelper(helper){var wrapped,view=this,res=(view.ctx||{})[helper];res=res===undefined?view.getRsc("helpers",helper):res;if(res){if(typeof res==="function"){wrapped=function(){return res.apply(view,arguments)};$extend(wrapped,res)}} 13return wrapped||res} 14function convertVal(converter,view,tagCtx){var tmplConverter,tag,value,boundTagCtx=+tagCtx===tagCtx&&tagCtx,linkCtx=view.linkCtx;if(boundTagCtx){tagCtx=(boundTagCtx=view.tmpl.bnds[boundTagCtx-1])(view.data,view,$views)} 15value=tagCtx.args[0];if(converter||boundTagCtx){tag=linkCtx&&linkCtx.tag||{_:{inline:!linkCtx},tagName:converter+":",flow:!0,_is:"tag"};tag._.bnd=boundTagCtx;if(linkCtx){linkCtx.tag=tag;tag.linkCtx=linkCtx;tagCtx.ctx=extendCtx(tagCtx.ctx,linkCtx.view.ctx)} 16tag.tagCtx=tagCtx;tagCtx.view=view;tag.ctx=tagCtx.ctx||{};delete tagCtx.ctx;view._.tag=tag;converter=converter!=="true"&&converter;if(converter&&((tmplConverter=view.getRsc("converters",converter))||error("Unknown converter: {{"+converter+":"))){tag.depends=tmplConverter.depends;value=tmplConverter.apply(tag,tagCtx.args)} 17value=boundTagCtx&&view._.onRender?view._.onRender(value,view,boundTagCtx):value;view._.tag=undefined} 18return value} 19function getResource(resourceType,itemName){var res,view=this,store=$views[resourceType];res=store&&store[itemName];while((res===undefined)&&view){store=view.tmpl[resourceType];res=store&&store[itemName];view=view.parent} 20return res} 21function renderTag(tagName,parentView,tmpl,tagCtxs){var render,tag,tags,attr,isElse,parentTag,i,l,itemRet,tagCtx,tagCtxCtx,content,boundTagFn,tagDef,ret="",boundTagKey=+tagCtxs===tagCtxs&&tagCtxs,linkCtx=parentView.linkCtx||0,ctx=parentView.ctx,parentTmpl
21=tmpl||parentView.tmpl,parentView_=parentView._;if(tagName._is==="tag"){tag=tagName;tagName=tag.tagName} 22if(boundTagKey){tagCtxs=(boundTagFn=parentTmpl.bnds[boundTagKey-1])(parentView.data,parentView,$views)} 23l=tagCtxs.length;tag=tag||linkCtx.tag;for(i=0;i<l;i++){tagCtx=tagCtxs[i];content=tagCtx.tmpl;content=tagCtx.content=content&&parentTmpl.tmpls[content-1];tmpl=tagCtx.props.tmpl;if(!i&&(!tmpl||!tag)){tagDef=parentView.getRsc("tags",tagName)||error("Unknown tag: {{"+tagName+"}}")} 24tmpl=tmpl||!i&&tagDef.template||content;tmpl=""+tmpl===tmpl?parentView.getRsc("templates",tmpl)||$templates(tmpl):tmpl;$extend(tagCtx,{tmpl:tmpl,render:renderContent,index:i,view:parentView,ctx:extendCtx(tagCtx.ctx,ctx)});if(!tag){if(tagDef.init){tag=new tagDef.init(tagCtx,linkCtx,ctx);tag.attr=tag.attr||tagDef.attr||undefined}else{tag={render:tagDef.render}} 25tag._={inline:!linkCtx};if(linkCtx){linkCtx.attr=tag.attr=linkCtx.attr||tag.attr;linkCtx.tag=tag;tag.linkCtx=linkCtx} 26if(tag._.bnd=boundTagFn||linkCtx){tag._.arrVws={}} 27tag.tagName=tagName;tag.parent=parentTag=ctx&&ctx.tag,tag._is="tag"} 28parentView_.tag=tag;tagCtx.tag=tag;tag.tagCtxs=tagCtxs;tag.rendering={};if(!tag.flow){tagCtxCtx=tagCtx.ctx=tagCtx.ctx||{};tags=tagCtxCtx.parentTags=ctx&&extendCtx(tagCtxCtx.parentTags,ctx.parentTags)||{};if(parentTag){tags[parentTag.tagName]=parentTag} 29tagCtxCtx.tag=tag}} 30for(i=0;i<l;i++){tagCtx=tag.tagCtx=tagCtxs[i];tag.ctx=tagCtx.ctx;if(render=tag.render){itemRet=render.apply(tag,tagCtx.args)} 31ret+=itemRet!==undefined?itemRet:tagCtx.tmpl?tagCtx.render():""} 32delete tag.rendering;tag.tagCtx=tag.tagCtxs[0];tag.ctx=tag.tagCtx.ctx;if(tag._.inline&&(attr=tag.attr)&&attr!=="html"){ret=attr==="text"?$converters.html(ret):""} 33return ret=boundTagKey&&parentView._.onRender?parentView._.onRender(ret,parentView,boundTagKey):ret} 34function View(context,type,parentView,data,template,key,contentTmpl,onRender){var views,parentView_,tag,isArray=type==="array",self_={key:0,useKey:isArray?0:1,id:""+viewId++,onRender:onRender,bnds:{}},self={data:data,tmpl:template,content:contentTmpl,views:isArray?[]:{},parent:parentView,ctx:context,type:type,get:getView,getIndex:getIndex,getRsc:getResource,hlp:getHelper,_:self_,_is:"view"};if(parentView){views=parentView.views;parentView_=parentView._;if(parentView_.useKey){views[self_.key="_"+parentView_.useKey++]=self;tag=parentView_.tag;self_.bnd=isArray&&(!tag||!!tag._.bnd&&tag)}else{views.splice(self_.key=self.index=key!==undefined?key:views.length,0,self)} 35self.ctx=context||parentView.ctx} 36return self} 37function compileChildResources(parentTmpl){var storeName,resources,resourceName,settings,compile;for(storeName in jsvStores){settings=jsvStores[storeName];if((compile=settings.compile)&&(resources=parentTmpl[storeName+"s"])){for(resourceName in resources){resources[resourceName]=compile(resourceName,resources[resourceName],parentTmpl,storeName,settings)}}}} 38function compileTag(name,item,parentTmpl){var init,tmpl;if(typeof item==="function"){item={depends:item.depends,render:item}}else{if(tmpl=item.template){item.template=""+tmpl===tmpl?($templates[tmpl]||$templates(tmpl)):tmpl} 39if(item.init!==!1){init=item.init=item.init||function(tagCtx){};init.prototype=item;(init.prototype=item).constructor=init}} 40if(parentTmpl){item._parentTmpl=parentTmpl} 41return item} 42function compileTmpl(name,tmpl,parentTmpl,storeName,storeSettings,options){function tmplOrMarkupFromStr(value){if((""+value===value)||value.nodeType>0){try{elem=value.nodeType>0?value:!rTmplString.test(value)&&jQuery&&jQuery(global.document).find(value)[0]}catch(e){} 43if(elem){value=elem.getAttribute(tmplAttr);name=name||value;value=$templates[value];if(!value){name=name||"_"+autoTmplName++;elem.setAttribute(tmplAttr,name);value=$templates[name]=compileTmpl(name,elem.innerHTML,parentTmpl,storeName,storeSettings,options)}} 44return value}} 45var tmplOrMarkup,elem;tmpl=tmpl||"";tmplOrMarkup=tmplOrMarkupFromStr(tmpl);options=options||(tmpl.markup?tmpl:{});options.tmplName=name;if(parentTmpl){options._parentTmpl=parentTmpl} 46if(!tmplOrMarkup&&tmpl.markup&&(tmplOrMarkup=tmplOrMarkupFromStr(tmpl.markup))){if(tmplOrMarkup.fn&&(tmplOrMarkup.debug!==tmpl.debug||tmplOrMarkup.allowCode!==tmpl.allowCode)){tmplOrMarkup=tmplOrMarkup.markup}} 47if(tmplOrMarkup!==undefined){if(name&&!parentTmpl){$render[name]=function(){return tmpl.render.apply(tmpl,arguments)}} 48if(tmplOrMarkup.fn||tmpl.fn){if(tmplOrMarkup.fn){if(name&&name!==tmplOrMarkup.tmplName){tmpl=extendCtx(options,tmplOrMarkup)}else{tmpl=tmplOrMarkup}}}else{tmpl=TmplObject(tmplOrMarkup,options);tmplFn(tmplOrMarkup,tmpl)} 49compileChildResources(options);return tmpl}} 50function TmplObject(markup,options){var htmlTag,wrapMap=$viewsSettings.wrapMap||{},tmpl=$extend({markup:markup,tmpls:[],links:{},tags:{},bnds:[],_is:"template",render:renderContent},options);if(!options.htmlTag){htmlTag=rFirstElem.exec(markup);tmpl.htmlTag=htmlTag?htmlTag[1].toLowerCase():""} 51htmlTag=wrapMap[tmpl.htmlTag];if(htmlTag&&htmlTag!==wrapMap.div){tmpl.markup=$.trim(tmpl.markup);tmpl._elCnt=!0} 52return tmpl} 53function registerStore(storeName,storeSettings){function theStore(name,item,parentTmpl){var onStore,compile,itemName,thisStore;
53if(name&&""+name!==name&&!name.nodeType&&!name.markup){for(itemName in name){theStore(itemName,name[itemName],item)} 54return $views} 55if(item===undefined){item=name;name=undefined} 56if(name&&""+name!==name){parentTmpl=item;item=name;name=undefined} 57thisStore=parentTmpl?parentTmpl[storeNames]=parentTmpl[storeNames]||{}:theStore;compile=storeSettings.compile;if(onStore=$viewsSub.onBeforeStoreItem){compile=onStore(thisStore,name,item,compile)||compile} 58if(!name){item=compile(undefined,item)}else if(item===null){delete thisStore[name]}else{thisStore[name]=compile?(item=compile(name,item,parentTmpl,storeName,storeSettings)):item} 59if(item){item._is=storeName} 60if(onStore=$viewsSub.onStoreItem){onStore(thisStore,name,item,compile)} 61return item} 62var storeNames=storeName+"s";$views[storeNames]=theStore;jsvStores[storeName]=storeSettings} 63function renderContent(data,context,parentView,key,isLayout,onRender){var i,l,dataItem,newView,childView,itemResult,swapContent,tagCtx,contentTmpl,tag_,outerOnRender,tmplName,tmpl,self=this,allowDataLink=!self.attr||self.attr==="html",result="";if(key===!0){swapContent=!0;key=0} 64if(self.tag){tagCtx=self;self=self.tag;tag_=self._;tmplName=self.tagName;tmpl=tagCtx.tmpl;context=extendCtx(context,self.ctx);contentTmpl=tagCtx.content;if(tagCtx.props.link===!1){context=context||{};context.link=!1} 65parentView=parentView||tagCtx.view;data=data===undefined?parentView:data}else{tmpl=self.jquery&&(self[0]||error('Unknown template: "'+self.selector+'"'))||self} 66if(tmpl){if(!parentView&&data&&data._is==="view"){parentView=data} 67if(parentView){contentTmpl=contentTmpl||parentView.content;onRender=onRender||parentView._.onRender;if(data===parentView){data=parentView.data;isLayout=!0} 68context=extendCtx(context,parentView.ctx)} 69if(!parentView||parentView.data===undefined){(context=context||{}).root=data} 70if(!tmpl.fn){tmpl=$templates[tmpl]||$templates(tmpl)} 71if(tmpl){onRender=(context&&context.link)!==!1&&allowDataLink&&onRender;outerOnRender=onRender;if(onRender===!0){outerOnRender=undefined;onRender=parentView._.onRender} 72if($.isArray(data)&&!isLayout){newView=swapContent?parentView:(key!==undefined&&parentView)||View(context,"array",parentView,data,tmpl,key,contentTmpl,onRender);for(i=0,l=data.length;i<l;i++){dataItem=data[i];childView=View(context,"item",newView,dataItem,tmpl,(key||0)+i,contentTmpl,onRender);itemResult=tmpl.fn(dataItem,childView,$views);result+=newView._.onRender?newView._.onRender(itemResult,childView):itemResult}}else{newView=swapContent?parentView:View(context,tmplName||"data",parentView,data,tmpl,key,contentTmpl,onRender);if(tag_&&!self.flow){newView.tag=self} 73result+=tmpl.fn(data,newView,$views)} 74return outerOnRender?outerOnRender(result,newView):result}} 75return""} 76function error(message){if($viewsSettings.debugMode){throw new $views.sub.Error(message)}} 77function syntaxError(message){error("Syntax error\n"+message)} 78function tmplFn(markup,tmpl,isLinkExpr,convertBack){function pushprecedingContent(shift){shift-=loc;if(shift){content.push(markup.substr(loc,shift).replace(rNewLine,"\\n"))}} 79function blockTagCheck(tagName){tagName&&syntaxError('Unmatched or missing tag: "{{/'+tagName+'}}" in template:\n'+markup)} 80function parseTag(all,bind,tagName,converter,colon,html,comment,codeTag,params,slash,closeBlock,index){if(html){colon=":";converter="html"} 81slash=slash||isLinkExpr;var noError,current0,pathBindings=bind&&[],code="",hash="",passedCtx="",block=!slash&&!colon&&!comment;
81tagName=tagName||colon;pushprecedingContent(index);loc=index+all.length;if(codeTag){if(allowCode){content.push(["*","\n"+params.replace(rUnescapeQuotes,"$1")+"\n"])}}else if(tagName){if(tagName==="else"){if(rTestElseIf.test(params)){syntaxError('for "{{else if expr}}" use "{{else expr}}"')} 82pathBindings=current[6];current[7]=markup.substring(current[7],index);current=stack.pop();content=current[3];block=!0} 83if(params){params=params.replace(rNewLine," ");code=parseParams(params,pathBindings).replace(rBuildHash,function(all,isCtx,keyValue){if(isCtx){passedCtx+=keyValue+","}else{hash+=keyValue+","} 84return""})} 85hash=hash.slice(0,-1);code=code.slice(0,-1);noError=hash&&(hash.indexOf("noerror:true")+1)&&hash||"";newNode=[tagName,converter||!!convertBack||"",code,block&&[],'params:"'+params+'",props:{'+hash+"}"+(passedCtx?",ctx:{"+passedCtx.slice(0,-1)+"}":""),noError,pathBindings||0];content.push(newNode);if(block){stack.push(current);current=newNode;current[7]=loc}}else if(closeBlock){current0=current[0];blockTagCheck(closeBlock!==current0&¤t0!=="else"&&closeBlock);current[7]=markup.substring(current[7],index);current=stack.pop()} 86blockTagCheck(!current&&closeBlock);content=current[3]} 87var newNode,allowCode=tmpl&&tmpl.allowCode,astTop=[],loc=0,stack=[],content=astTop,current=[,,,astTop];markup=markup.replace(rEscapeQuotes,"\\$1");blockTagCheck(stack[0]&&stack[0][3].pop()[0]);markup.replace(rTag,parseTag);pushprecedingContent(markup.length);if(loc=astTop[astTop.length-1]){blockTagCheck(""+loc!==loc&&(+loc[7]===loc[7])&&loc[0])} 88return buildCode(astTop,tmpl||markup,isLinkExpr)} 89function buildCode(ast,tmpl,isLinkExpr){var i,node,tagName,converter,params,hash,hasTag,hasEncoder,getsVal,hasCnvt,tmplBindings,pathBindings,elseStartIndex,elseIndex,nestedTmpls,tmplName,nestedTmpl,tagAndElses,allowCode,content,markup,notElse,nextIsElse,oldCode,isElse,isGetVal,prm,tagCtxFn,tmplBindingKey=0,code="",noError="",tmplOptions={},l=ast.length;if(""+tmpl===tmpl){tmplName=isLinkExpr?'data-link="'+tmpl.replace(rNewLine," ").slice(1,-1)+'"':tmpl;tmpl=0}else{tmplName=tmpl.tmplName||"unnamed";if(allowCode=tmpl.allowCode){tmplOptions.allowCode=!0} 90if(tmpl.debug){tmplOptions.debug=!0} 91tmplBindings=tmpl.bnds;nestedTmpls=tmpl.tmpls} 92for(i=0;i<l;i++){node=ast[i];if(""+node===node){code+='\nret+="'+node+'";'}else{tagName=node[0];if(tagName==="*"){code+=""+node[1]}else{converter=node[1];params=node[2];content=node[3];hash=node[4];noError=node[5];markup=node[7];if(!(isElse=tagName==="else")){tmplBindingKey=0;if(tmplBindings&&(pathBindings=node[6])){tmplBindingKey=tmplBindings.push(pathBindings)}} 93if(isGetVal=tagName===":"){if(converter){tagName=converter==="html"?">":converter+tagName} 94if(noError){prm="prm"+i;noError="try{var "+prm+"=["+params+"][0];}catch(e){"+prm+'="";}\n';params=prm}}else{if(content){nestedTmpl=TmplObject(markup,tmplOptions);nestedTmpl.tmplName=tmplName+"/"+tagName;buildCode(content,nestedTmpl);nestedTmpls.push(nestedTmpl)} 95if(!isElse){tagAndElses=tagName;oldCode=code;code="";elseStartIndex=i} 96nextIsElse=ast[i+1];nextIsElse=nextIsElse&&nextIsElse[0]==="else"} 97hash+=",args:["+params+"]}";if(isGetVal&&pathBindings||converter&&tagName!==">"){tagCtxFn=new Function("data,view,j,u"," // "+tmplName+" "+tmplBindingKey+" "+tagName+"\n"+noError+"return {"+hash+";");tagCtxFn.paths=pathBindings;tagCtxFn._ctxs=tagName;if(isLinkExpr){return tagCtxFn} 98hasCnvt=!0} 99code+=(isGetVal?"\n"+(pathBindings?"":noError)+(isLinkExpr?"return ":"ret+=")+(hasCnvt?(hasCnvt=!0,'c("'+converter+'",view,'+(pathBindings?((tmplBindings[tmplBindingKey-1]=tagCtxFn),tmplBindingKey):"{"+hash)+");"):tagName===">"?(hasEncoder=!0,"h("+params+");"):(getsVal=!0,"(v="+params+")!="+(isLinkExpr?"=":"")+'u?v:"";')):(hasTag=!0,"{tmpl:"+(content?nestedTmpls.length:"0")+","+hash+","));if(tagAndElses&&!nextIsElse){code="["+code.slice(0,-1)+"]";if(isLinkExpr||pathBindings){code=new Function("data,view,j,u"," // "+tmplName+" "+tmplBindingKey+" "+tagAndElses+"\nreturn "+code+";");if(pathBindings){(tmplBindings[tmplBindingKey-1]=code).paths=pathBindings} 100code._ctxs=tagName;if(isLinkExpr){return code}} 101code=oldCode+'\nret+=t("'+tagAndElses+'",view,this,'+(tmplBindingKey||code)+");";pathBindings=0;tagAndElses=0}}}} 102code="// "+tmplName+"\nvar j=j||"+(jQuery?"jQuery.":"js")+"views"+(getsVal?",v":"")+(hasTag?",t=j._tag":"")+(hasCnvt?",c=j._cnvt":"")+(hasEncoder?",h=j.converters.html":"")+(isLinkExpr?";\n":',ret="";\n')+($viewsSettings.tryCatch?"try{\n":"")+(tmplOptions.debug?"debugger;":"")+code+(isLinkExpr?"\n":"\nreturn ret;\n")+($viewsSettings.tryCatch?"\n}catch(e){return j._err(e);}":"");try{code=new Function("data,view,j,u",code)}catch(e){syntaxError("Compiled template code:\n\n"+code,e)} 103if(tmpl){tmpl.fn=code} 104return code} 105function parseParams(params,bindings){function parseTokens(all,lftPrn0,lftPrn,path,operator,err,eq,path2,prn,comma,lftPrn2,apos,quot,rtPrn,rtPrnDot,prn2,space,index,full){operator=operator||"";lftPrn=lftPrn||lftPrn0||lftPrn2;path=path||path2;if(bindings&&rtPrnDot){bindings.push({_jsvOb:full.slice(pathStart[parenDepth-1]+1,index+1)})} 106prn=prn||prn2||"";function parsePath(all,object,helper,view,viewProperty,pathTokens,leafToken){if(object){bindings&&!isAlias&&bindings.push(path);if(object!=="."){var ret=(helper?'view.hlp("'+helper+'")':view?"view":"data")+(leafToken?(viewProperty?"."+viewProperty:helper?"":(view?"":"."+object))+(pathTokens||""):(leafToken=helper?"":view?viewProperty||"":object,""));ret=ret+(leafToken?"."+leafToken:"");return ret.slice(0,9)==="view.data"?ret.slice(5):ret}} 107return all} 108if(err){syntaxError(params)}else{var tokens=(aposed?(aposed=!apos,(aposed?all:'"')):quoted?(quoted=!quot,(quoted?all:'"')):((lftPrn?(parenDepth++,pathStart[parenDepth]=index,lftPrn):"")+(space?(parenDepth?"":named?(named=isAlias=!1,"\b"):","):eq?(parenDepth&&syntaxError(params),named=path,isAlias=path.charAt(0)==="~",'\b'+path+':'):path?(path.split("^").join(".").replace(rPath,parsePath)+(prn?(fnCall[++parenDepth]=!0,prn):operator)):operator?operator:rtPrn?((fnCall[parenDepth--]=!1,rtPrn)+(prn?(fnCall[++parenDepth]=!0,prn):"")):comma?(fnCall[parenDepth]||syntaxError(params),","):lftPrn0?"":(aposed=apos,quoted=quot,'"'))));return tokens}
108} 109var named,isAlias,fnCall={},pathStart={0:-1},parenDepth=0,quoted=!1,aposed=!1;return(params+" ").replace(rParams,parseTokens)} 110function extendCtx(context,parentContext){return context&&context!==parentContext?(parentContext?$extend($extend({},parentContext),context):context):parentContext&&$extend({},parentContext)} 111for(jsvStoreName in jsvStores){registerStore(jsvStoreName,jsvStores[jsvStoreName])} 112var $templates=$views.templates,$converters=$views.converters,$helpers=$views.helpers,$tags=$views.tags,$viewsSub=$views.sub,$viewsSettings=$views.settings;if(jQuery){$=jQuery;$.fn.render=renderContent}else{$=global.jsviews={};$.isArray=Array&&Array.isArray||function(obj){return Object.prototype.toString.call(obj)==="[object Array]"}} 113$.render=$render;$.views=$views;$.templates=$templates=$views.templates;$tags({"else":function(){},"if":{render:function(val){var self=this,ret=(self.rendering.done||!val&&(arguments.length||!self.tagCtx.index))?"":(self.rendering.done=!0,self.selected=self.tagCtx.index,self.tagCtx.render());return ret},onUpdate:function(ev,eventArgs,tagCtxs){var tci,prevArg,different;for(tci=0;(prevArg=this.tagCtxs[tci])&&prevArg.args.length;tci++){prevArg=prevArg.args[0];different=!prevArg!==!tagCtxs[tci].args[0];if(!!prevArg||different){return different}} 114return!1},flow:!0},"for":{render:function(val){var i,arg,self=this,tagCtx=self.tagCtx,noArg=!arguments.length,result="",done=noArg||0;if(!self.rendering.done){if(noArg){result=undefined}else if(val!==undefined){result+=tagCtx.render(val);done+=$.isArray(val)?val.length:1} 115if(self.rendering.done=done){self.selected=tagCtx.index}} 116return result},onUpdate:function(ev,eventArgs,tagCtxs){},onArrayChange:function(ev,eventArgs){var arrayView,self=this,change=eventArgs.change;if(this.tagCtxs[1]&&(change==="insert"&&ev.target.length===eventArgs.items.length||change==="remove"&&!ev.target.length||change==="refresh"&&!eventArgs.oldItems.length!==!ev.target.length)){this.refresh()}else{for(arrayView in self._.arrVws){arrayView=self._.arrVws[arrayView];if(arrayView.data===ev.target){arrayView._.onArrayChange.apply(arrayView,arguments)}}} 117ev.done=!0},flow:!0},include:{flow:!0},"*":{render:function(value){return value},flow:!0}});function getCharEntity(ch){return charEntities[ch]} 118$converters({html:function(text){return text!=undefined?String(text).replace(rHtmlEncode,getCharEntity):""},attr:function(text){return text!=undefined?String(text).replace(rAttrEncode,getCharEntity):text===null?null:""},url:function(text){return text!=undefined?encodeURI(String(text)):text===null?null:""}});$viewsDelimiters()})(this,this.jQuery)
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.