⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact ccb714d21248a6b064441c69e37d3718823f11cac8c98335eac4c39b9aaa786e:


0000: 28 66 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 65  (function define
0010: 4d 75 73 74 61 63 68 65 28 67 6c 6f 62 61 6c 2c  Mustache(global,
0020: 66 61 63 74 6f 72 79 29 7b 69 66 28 74 79 70 65  factory){if(type
0030: 6f 66 20 65 78 70 6f 72 74 73 3d 3d 3d 22 6f 62  of exports==="ob
0040: 6a 65 63 74 22 26 26 65 78 70 6f 72 74 73 26 26  ject"&&exports&&
0050: 74 79 70 65 6f 66 20 65 78 70 6f 72 74 73 2e 6e  typeof exports.n
0060: 6f 64 65 4e 61 6d 65 21 3d 3d 22 73 74 72 69 6e  odeName!=="strin
0070: 67 22 29 7b 66 61 63 74 6f 72 79 28 65 78 70 6f  g"){factory(expo
0080: 72 74 73 29 7d 65 6c 73 65 20 69 66 28 74 79 70  rts)}else if(typ
0090: 65 6f 66 20 64 65 66 69 6e 65 3d 3d 3d 22 66 75  eof define==="fu
00a0: 6e 63 74 69 6f 6e 22 26 26 64 65 66 69 6e 65 2e  nction"&&define.
00b0: 61 6d 64 29 7b 64 65 66 69 6e 65 28 5b 22 65 78  amd){define(["ex
00c0: 70 6f 72 74 73 22 5d 2c 66 61 63 74 6f 72 79 29  ports"],factory)
00d0: 7d 65 6c 73 65 7b 67 6c 6f 62 61 6c 2e 4d 75 73  }else{global.Mus
00e0: 74 61 63 68 65 3d 7b 7d 3b 66 61 63 74 6f 72 79  tache={};factory
00f0: 28 67 6c 6f 62 61 6c 2e 4d 75 73 74 61 63 68 65  (global.Mustache
0100: 29 7d 7d 29 28 74 68 69 73 2c 66 75 6e 63 74 69  )}})(this,functi
0110: 6f 6e 20 6d 75 73 74 61 63 68 65 46 61 63 74 6f  on mustacheFacto
0120: 72 79 28 6d 75 73 74 61 63 68 65 29 7b 76 61 72  ry(mustache){var
0130: 20 6f 62 6a 65 63 74 54 6f 53 74 72 69 6e 67 3d   objectToString=
0140: 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70 65  Object.prototype
0150: 2e 74 6f 53 74 72 69 6e 67 3b 76 61 72 20 69 73  .toString;var is
0160: 41 72 72 61 79 3d 41 72 72 61 79 2e 69 73 41 72  Array=Array.isAr
0170: 72 61 79 7c 7c 66 75 6e 63 74 69 6f 6e 20 69 73  ray||function is
0180: 41 72 72 61 79 50 6f 6c 79 66 69 6c 6c 28 6f 62  ArrayPolyfill(ob
0190: 6a 65 63 74 29 7b 72 65 74 75 72 6e 20 6f 62 6a  ject){return obj
01a0: 65 63 74 54 6f 53 74 72 69 6e 67 2e 63 61 6c 6c  ectToString.call
01b0: 28 6f 62 6a 65 63 74 29 3d 3d 3d 22 5b 6f 62 6a  (object)==="[obj
01c0: 65 63 74 20 41 72 72 61 79 5d 22 7d 3b 66 75 6e  ect Array]"};fun
01d0: 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 69 6f 6e  ction isFunction
01e0: 28 6f 62 6a 65 63 74 29 7b 72 65 74 75 72 6e 20  (object){return 
01f0: 74 79 70 65 6f 66 20 6f 62 6a 65 63 74 3d 3d 3d  typeof object===
0200: 22 66 75 6e 63 74 69 6f 6e 22 7d 66 75 6e 63 74  "function"}funct
0210: 69 6f 6e 20 74 79 70 65 53 74 72 28 6f 62 6a 29  ion typeStr(obj)
0220: 7b 72 65 74 75 72 6e 20 69 73 41 72 72 61 79 28  {return isArray(
0230: 6f 62 6a 29 3f 22 61 72 72 61 79 22 3a 74 79 70  obj)?"array":typ
0240: 65 6f 66 20 6f 62 6a 7d 66 75 6e 63 74 69 6f 6e  eof obj}function
0250: 20 65 73 63 61 70 65 52 65 67 45 78 70 28 73 74   escapeRegExp(st
0260: 72 69 6e 67 29 7b 72 65 74 75 72 6e 20 73 74 72  ring){return str
0270: 69 6e 67 2e 72 65 70 6c 61 63 65 28 2f 5b 5c 2d  ing.replace(/[\-
0280: 5c 5b 5c 5d 7b 7d 28 29 2a 2b 3f 2e 2c 5c 5c 5c  \[\]{}()*+?.,\\\
0290: 5e 24 7c 23 5c 73 5d 2f 67 2c 22 5c 5c 24 26 22  ^$|#\s]/g,"\\$&"
02a0: 29 7d 66 75 6e 63 74 69 6f 6e 20 68 61 73 50 72  )}function hasPr
02b0: 6f 70 65 72 74 79 28 6f 62 6a 2c 70 72 6f 70 4e  operty(obj,propN
02c0: 61 6d 65 29 7b 72 65 74 75 72 6e 20 6f 62 6a 21  ame){return obj!
02d0: 3d 6e 75 6c 6c 26 26 74 79 70 65 6f 66 20 6f 62  =null&&typeof ob
02e0: 6a 3d 3d 3d 22 6f 62 6a 65 63 74 22 26 26 70 72  j==="object"&&pr
02f0: 6f 70 4e 61 6d 65 20 69 6e 20 6f 62 6a 7d 76 61  opName in obj}va
0300: 72 20 72 65 67 45 78 70 54 65 73 74 3d 52 65 67  r regExpTest=Reg
0310: 45 78 70 2e 70 72 6f 74 6f 74 79 70 65 2e 74 65  Exp.prototype.te
0320: 73 74 3b 66 75 6e 63 74 69 6f 6e 20 74 65 73 74  st;function test
0330: 52 65 67 45 78 70 28 72 65 2c 73 74 72 69 6e 67  RegExp(re,string
0340: 29 7b 72 65 74 75 72 6e 20 72 65 67 45 78 70 54  ){return regExpT
0350: 65 73 74 2e 63 61 6c 6c 28 72 65 2c 73 74 72 69  est.call(re,stri
0360: 6e 67 29 7d 76 61 72 20 6e 6f 6e 53 70 61 63 65  ng)}var nonSpace
0370: 52 65 3d 2f 5c 53 2f 3b 66 75 6e 63 74 69 6f 6e  Re=/\S/;function
0380: 20 69 73 57 68 69 74 65 73 70 61 63 65 28 73 74   isWhitespace(st
0390: 72 69 6e 67 29 7b 72 65 74 75 72 6e 21 74 65 73  ring){return!tes
03a0: 74 52 65 67 45 78 70 28 6e 6f 6e 53 70 61 63 65  tRegExp(nonSpace
03b0: 52 65 2c 73 74 72 69 6e 67 29 7d 76 61 72 20 65  Re,string)}var e
03c0: 6e 74 69 74 79 4d 61 70 3d 7b 22 26 22 3a 22 26  ntityMap={"&":"&
03d0: 61 6d 70 3b 22 2c 22 3c 22 3a 22 26 6c 74 3b 22  amp;","<":"&lt;"
03e0: 2c 22 3e 22 3a 22 26 67 74 3b 22 2c 27 22 27 3a  ,">":"&gt;",'"':
03f0: 22 26 71 75 6f 74 3b 22 2c 22 27 22 3a 22 26 23  "&quot;","'":"&#
0400: 33 39 3b 22 2c 22 2f 22 3a 22 26 23 78 32 46 3b  39;","/":"&#x2F;
0410: 22 2c 22 60 22 3a 22 26 23 78 36 30 3b 22 2c 22  ","`":"&#x60;","
0420: 3d 22 3a 22 26 23 78 33 44 3b 22 7d 3b 66 75 6e  =":"&#x3D;"};fun
0430: 63 74 69 6f 6e 20 65 73 63 61 70 65 48 74 6d 6c  ction escapeHtml
0440: 28 73 74 72 69 6e 67 29 7b 72 65 74 75 72 6e 20  (string){return 
0450: 53 74 72 69 6e 67 28 73 74 72 69 6e 67 29 2e 72  String(string).r
0460: 65 70 6c 61 63 65 28 2f 5b 26 3c 3e 22 27 60 3d  eplace(/[&<>"'`=
0470: 5c 2f 5d 2f 67 2c 66 75 6e 63 74 69 6f 6e 20 66  \/]/g,function f
0480: 72 6f 6d 45 6e 74 69 74 79 4d 61 70 28 73 29 7b  romEntityMap(s){
0490: 72 65 74 75 72 6e 20 65 6e 74 69 74 79 4d 61 70  return entityMap
04a0: 5b 73 5d 7d 29 7d 76 61 72 20 77 68 69 74 65 52  [s]})}var whiteR
04b0: 65 3d 2f 5c 73 2a 2f 3b 76 61 72 20 73 70 61 63  e=/\s*/;var spac
04c0: 65 52 65 3d 2f 5c 73 2b 2f 3b 76 61 72 20 65 71  eRe=/\s+/;var eq
04d0: 75 61 6c 73 52 65 3d 2f 5c 73 2a 3d 2f 3b 76 61  ualsRe=/\s*=/;va
04e0: 72 20 63 75 72 6c 79 52 65 3d 2f 5c 73 2a 5c 7d  r curlyRe=/\s*\}
04f0: 2f 3b 76 61 72 20 74 61 67 52 65 3d 2f 23 7c 5c  /;var tagRe=/#|\
0500: 5e 7c 5c 2f 7c 3e 7c 5c 7b 7c 26 7c 3d 7c 21 2f  ^|\/|>|\{|&|=|!/
0510: 3b 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 54  ;function parseT
0520: 65 6d 70 6c 61 74 65 28 74 65 6d 70 6c 61 74 65  emplate(template
0530: 2c 74 61 67 73 29 7b 69 66 28 21 74 65 6d 70 6c  ,tags){if(!templ
0540: 61 74 65 29 72 65 74 75 72 6e 5b 5d 3b 76 61 72  ate)return[];var
0550: 20 73 65 63 74 69 6f 6e 73 3d 5b 5d 3b 76 61 72   sections=[];var
0560: 20 74 6f 6b 65 6e 73 3d 5b 5d 3b 76 61 72 20 73   tokens=[];var s
0570: 70 61 63 65 73 3d 5b 5d 3b 76 61 72 20 68 61 73  paces=[];var has
0580: 54 61 67 3d 66 61 6c 73 65 3b 76 61 72 20 6e 6f  Tag=false;var no
0590: 6e 53 70 61 63 65 3d 66 61 6c 73 65 3b 66 75 6e  nSpace=false;fun
05a0: 63 74 69 6f 6e 20 73 74 72 69 70 53 70 61 63 65  ction stripSpace
05b0: 28 29 7b 69 66 28 68 61 73 54 61 67 26 26 21 6e  (){if(hasTag&&!n
05c0: 6f 6e 53 70 61 63 65 29 7b 77 68 69 6c 65 28 73  onSpace){while(s
05d0: 70 61 63 65 73 2e 6c 65 6e 67 74 68 29 64 65 6c  paces.length)del
05e0: 65 74 65 20 74 6f 6b 65 6e 73 5b 73 70 61 63 65  ete tokens[space
05f0: 73 2e 70 6f 70 28 29 5d 7d 65 6c 73 65 7b 73 70  s.pop()]}else{sp
0600: 61 63 65 73 3d 5b 5d 7d 68 61 73 54 61 67 3d 66  aces=[]}hasTag=f
0610: 61 6c 73 65 3b 6e 6f 6e 53 70 61 63 65 3d 66 61  alse;nonSpace=fa
0620: 6c 73 65 7d 76 61 72 20 6f 70 65 6e 69 6e 67 54  lse}var openingT
0630: 61 67 52 65 2c 63 6c 6f 73 69 6e 67 54 61 67 52  agRe,closingTagR
0640: 65 2c 63 6c 6f 73 69 6e 67 43 75 72 6c 79 52 65  e,closingCurlyRe
0650: 3b 66 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c  ;function compil
0660: 65 54 61 67 73 28 74 61 67 73 54 6f 43 6f 6d 70  eTags(tagsToComp
0670: 69 6c 65 29 7b 69 66 28 74 79 70 65 6f 66 20 74  ile){if(typeof t
0680: 61 67 73 54 6f 43 6f 6d 70 69 6c 65 3d 3d 3d 22  agsToCompile==="
0690: 73 74 72 69 6e 67 22 29 74 61 67 73 54 6f 43 6f  string")tagsToCo
06a0: 6d 70 69 6c 65 3d 74 61 67 73 54 6f 43 6f 6d 70  mpile=tagsToComp
06b0: 69 6c 65 2e 73 70 6c 69 74 28 73 70 61 63 65 52  ile.split(spaceR
06c0: 65 2c 32 29 3b 69 66 28 21 69 73 41 72 72 61 79  e,2);if(!isArray
06d0: 28 74 61 67 73 54 6f 43 6f 6d 70 69 6c 65 29 7c  (tagsToCompile)|
06e0: 7c 74 61 67 73 54 6f 43 6f 6d 70 69 6c 65 2e 6c  |tagsToCompile.l
06f0: 65 6e 67 74 68 21 3d 3d 32 29 74 68 72 6f 77 20  ength!==2)throw 
0700: 6e 65 77 20 45 72 72 6f 72 28 22 49 6e 76 61 6c  new Error("Inval
0710: 69 64 20 74 61 67 73 3a 20 22 2b 74 61 67 73 54  id tags: "+tagsT
0720: 6f 43 6f 6d 70 69 6c 65 29 3b 6f 70 65 6e 69 6e  oCompile);openin
0730: 67 54 61 67 52 65 3d 6e 65 77 20 52 65 67 45 78  gTagRe=new RegEx
0740: 70 28 65 73 63 61 70 65 52 65 67 45 78 70 28 74  p(escapeRegExp(t
0750: 61 67 73 54 6f 43 6f 6d 70 69 6c 65 5b 30 5d 29  agsToCompile[0])
0760: 2b 22 5c 5c 73 2a 22 29 3b 63 6c 6f 73 69 6e 67  +"\\s*");closing
0770: 54 61 67 52 65 3d 6e 65 77 20 52 65 67 45 78 70  TagRe=new RegExp
0780: 28 22 5c 5c 73 2a 22 2b 65 73 63 61 70 65 52 65  ("\\s*"+escapeRe
0790: 67 45 78 70 28 74 61 67 73 54 6f 43 6f 6d 70 69  gExp(tagsToCompi
07a0: 6c 65 5b 31 5d 29 29 3b 63 6c 6f 73 69 6e 67 43  le[1]));closingC
07b0: 75 72 6c 79 52 65 3d 6e 65 77 20 52 65 67 45 78  urlyRe=new RegEx
07c0: 70 28 22 5c 5c 73 2a 22 2b 65 73 63 61 70 65 52  p("\\s*"+escapeR
07d0: 65 67 45 78 70 28 22 7d 22 2b 74 61 67 73 54 6f  egExp("}"+tagsTo
07e0: 43 6f 6d 70 69 6c 65 5b 31 5d 29 29 7d 63 6f 6d  Compile[1]))}com
07f0: 70 69 6c 65 54 61 67 73 28 74 61 67 73 7c 7c 6d  pileTags(tags||m
0800: 75 73 74 61 63 68 65 2e 74 61 67 73 29 3b 76 61  ustache.tags);va
0810: 72 20 73 63 61 6e 6e 65 72 3d 6e 65 77 20 53 63  r scanner=new Sc
0820: 61 6e 6e 65 72 28 74 65 6d 70 6c 61 74 65 29 3b  anner(template);
0830: 76 61 72 20 73 74 61 72 74 2c 74 79 70 65 2c 76  var start,type,v
0840: 61 6c 75 65 2c 63 68 72 2c 74 6f 6b 65 6e 2c 6f  alue,chr,token,o
0850: 70 65 6e 53 65 63 74 69 6f 6e 3b 77 68 69 6c 65  penSection;while
0860: 28 21 73 63 61 6e 6e 65 72 2e 65 6f 73 28 29 29  (!scanner.eos())
0870: 7b 73 74 61 72 74 3d 73 63 61 6e 6e 65 72 2e 70  {start=scanner.p
0880: 6f 73 3b 76 61 6c 75 65 3d 73 63 61 6e 6e 65 72  os;value=scanner
0890: 2e 73 63 61 6e 55 6e 74 69 6c 28 6f 70 65 6e 69  .scanUntil(openi
08a0: 6e 67 54 61 67 52 65 29 3b 69 66 28 76 61 6c 75  ngTagRe);if(valu
08b0: 65 29 7b 66 6f 72 28 76 61 72 20 69 3d 30 2c 76  e){for(var i=0,v
08c0: 61 6c 75 65 4c 65 6e 67 74 68 3d 76 61 6c 75 65  alueLength=value
08d0: 2e 6c 65 6e 67 74 68 3b 69 3c 76 61 6c 75 65 4c  .length;i<valueL
08e0: 65 6e 67 74 68 3b 2b 2b 69 29 7b 63 68 72 3d 76  ength;++i){chr=v
08f0: 61 6c 75 65 2e 63 68 61 72 41 74 28 69 29 3b 69  alue.charAt(i);i
0900: 66 28 69 73 57 68 69 74 65 73 70 61 63 65 28 63  f(isWhitespace(c
0910: 68 72 29 29 7b 73 70 61 63 65 73 2e 70 75 73 68  hr)){spaces.push
0920: 28 74 6f 6b 65 6e 73 2e 6c 65 6e 67 74 68 29 7d  (tokens.length)}
0930: 65 6c 73 65 7b 6e 6f 6e 53 70 61 63 65 3d 74 72  else{nonSpace=tr
0940: 75 65 7d 74 6f 6b 65 6e 73 2e 70 75 73 68 28 5b  ue}tokens.push([
0950: 22 74 65 78 74 22 2c 63 68 72 2c 73 74 61 72 74  "text",chr,start
0960: 2c 73 74 61 72 74 2b 31 5d 29 3b 73 74 61 72 74  ,start+1]);start
0970: 2b 3d 31 3b 69 66 28 63 68 72 3d 3d 3d 22 5c 6e  +=1;if(chr==="\n
0980: 22 29 73 74 72 69 70 53 70 61 63 65 28 29 7d 7d  ")stripSpace()}}
0990: 69 66 28 21 73 63 61 6e 6e 65 72 2e 73 63 61 6e  if(!scanner.scan
09a0: 28 6f 70 65 6e 69 6e 67 54 61 67 52 65 29 29 62  (openingTagRe))b
09b0: 72 65 61 6b 3b 68 61 73 54 61 67 3d 74 72 75 65  reak;hasTag=true
09c0: 3b 74 79 70 65 3d 73 63 61 6e 6e 65 72 2e 73 63  ;type=scanner.sc
09d0: 61 6e 28 74 61 67 52 65 29 7c 7c 22 6e 61 6d 65  an(tagRe)||"name
09e0: 22 3b 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 77  ";scanner.scan(w
09f0: 68 69 74 65 52 65 29 3b 69 66 28 74 79 70 65 3d  hiteRe);if(type=
0a00: 3d 3d 22 3d 22 29 7b 76 61 6c 75 65 3d 73 63 61  =="="){value=sca
0a10: 6e 6e 65 72 2e 73 63 61 6e 55 6e 74 69 6c 28 65  nner.scanUntil(e
0a20: 71 75 61 6c 73 52 65 29 3b 73 63 61 6e 6e 65 72  qualsRe);scanner
0a30: 2e 73 63 61 6e 28 65 71 75 61 6c 73 52 65 29 3b  .scan(equalsRe);
0a40: 73 63 61 6e 6e 65 72 2e 73 63 61 6e 55 6e 74 69  scanner.scanUnti
0a50: 6c 28 63 6c 6f 73 69 6e 67 54 61 67 52 65 29 7d  l(closingTagRe)}
0a60: 65 6c 73 65 20 69 66 28 74 79 70 65 3d 3d 3d 22  else if(type==="
0a70: 7b 22 29 7b 76 61 6c 75 65 3d 73 63 61 6e 6e 65  {"){value=scanne
0a80: 72 2e 73 63 61 6e 55 6e 74 69 6c 28 63 6c 6f 73  r.scanUntil(clos
0a90: 69 6e 67 43 75 72 6c 79 52 65 29 3b 73 63 61 6e  ingCurlyRe);scan
0aa0: 6e 65 72 2e 73 63 61 6e 28 63 75 72 6c 79 52 65  ner.scan(curlyRe
0ab0: 29 3b 73 63 61 6e 6e 65 72 2e 73 63 61 6e 55 6e  );scanner.scanUn
0ac0: 74 69 6c 28 63 6c 6f 73 69 6e 67 54 61 67 52 65  til(closingTagRe
0ad0: 29 3b 74 79 70 65 3d 22 26 22 7d 65 6c 73 65 7b  );type="&"}else{
0ae0: 76 61 6c 75 65 3d 73 63 61 6e 6e 65 72 2e 73 63  value=scanner.sc
0af0: 61 6e 55 6e 74 69 6c 28 63 6c 6f 73 69 6e 67 54  anUntil(closingT
0b00: 61 67 52 65 29 7d 69 66 28 21 73 63 61 6e 6e 65  agRe)}if(!scanne
0b10: 72 2e 73 63 61 6e 28 63 6c 6f 73 69 6e 67 54 61  r.scan(closingTa
0b20: 67 52 65 29 29 74 68 72 6f 77 20 6e 65 77 20 45  gRe))throw new E
0b30: 72 72 6f 72 28 22 55 6e 63 6c 6f 73 65 64 20 74  rror("Unclosed t
0b40: 61 67 20 61 74 20 22 2b 73 63 61 6e 6e 65 72 2e  ag at "+scanner.
0b50: 70 6f 73 29 3b 74 6f 6b 65 6e 3d 5b 74 79 70 65  pos);token=[type
0b60: 2c 76 61 6c 75 65 2c 73 74 61 72 74 2c 73 63 61  ,value,start,sca
0b70: 6e 6e 65 72 2e 70 6f 73 5d 3b 74 6f 6b 65 6e 73  nner.pos];tokens
0b80: 2e 70 75 73 68 28 74 6f 6b 65 6e 29 3b 69 66 28  .push(token);if(
0b90: 74 79 70 65 3d 3d 3d 22 23 22 7c 7c 74 79 70 65  type==="#"||type
0ba0: 3d 3d 3d 22 5e 22 29 7b 73 65 63 74 69 6f 6e 73  ==="^"){sections
0bb0: 2e 70 75 73 68 28 74 6f 6b 65 6e 29 7d 65 6c 73  .push(token)}els
0bc0: 65 20 69 66 28 74 79 70 65 3d 3d 3d 22 2f 22 29  e if(type==="/")
0bd0: 7b 6f 70 65 6e 53 65 63 74 69 6f 6e 3d 73 65 63  {openSection=sec
0be0: 74 69 6f 6e 73 2e 70 6f 70 28 29 3b 69 66 28 21  tions.pop();if(!
0bf0: 6f 70 65 6e 53 65 63 74 69 6f 6e 29 74 68 72 6f  openSection)thro
0c00: 77 20 6e 65 77 20 45 72 72 6f 72 28 27 55 6e 6f  w new Error('Uno
0c10: 70 65 6e 65 64 20 73 65 63 74 69 6f 6e 20 22 27  pened section "'
0c20: 2b 76 61 6c 75 65 2b 27 22 20 61 74 20 27 2b 73  +value+'" at '+s
0c30: 74 61 72 74 29 3b 69 66 28 6f 70 65 6e 53 65 63  tart);if(openSec
0c40: 74 69 6f 6e 5b 31 5d 21 3d 3d 76 61 6c 75 65 29  tion[1]!==value)
0c50: 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28  throw new Error(
0c60: 27 55 6e 63 6c 6f 73 65 64 20 73 65 63 74 69 6f  'Unclosed sectio
0c70: 6e 20 22 27 2b 6f 70 65 6e 53 65 63 74 69 6f 6e  n "'+openSection
0c80: 5b 31 5d 2b 27 22 20 61 74 20 27 2b 73 74 61 72  [1]+'" at '+star
0c90: 74 29 7d 65 6c 73 65 20 69 66 28 74 79 70 65 3d  t)}else if(type=
0ca0: 3d 3d 22 6e 61 6d 65 22 7c 7c 74 79 70 65 3d 3d  =="name"||type==
0cb0: 3d 22 7b 22 7c 7c 74 79 70 65 3d 3d 3d 22 26 22  ="{"||type==="&"
0cc0: 29 7b 6e 6f 6e 53 70 61 63 65 3d 74 72 75 65 7d  ){nonSpace=true}
0cd0: 65 6c 73 65 20 69 66 28 74 79 70 65 3d 3d 3d 22  else if(type==="
0ce0: 3d 22 29 7b 63 6f 6d 70 69 6c 65 54 61 67 73 28  ="){compileTags(
0cf0: 76 61 6c 75 65 29 7d 7d 6f 70 65 6e 53 65 63 74  value)}}openSect
0d00: 69 6f 6e 3d 73 65 63 74 69 6f 6e 73 2e 70 6f 70  ion=sections.pop
0d10: 28 29 3b 69 66 28 6f 70 65 6e 53 65 63 74 69 6f  ();if(openSectio
0d20: 6e 29 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f  n)throw new Erro
0d30: 72 28 27 55 6e 63 6c 6f 73 65 64 20 73 65 63 74  r('Unclosed sect
0d40: 69 6f 6e 20 22 27 2b 6f 70 65 6e 53 65 63 74 69  ion "'+openSecti
0d50: 6f 6e 5b 31 5d 2b 27 22 20 61 74 20 27 2b 73 63  on[1]+'" at '+sc
0d60: 61 6e 6e 65 72 2e 70 6f 73 29 3b 72 65 74 75 72  anner.pos);retur
0d70: 6e 20 6e 65 73 74 54 6f 6b 65 6e 73 28 73 71 75  n nestTokens(squ
0d80: 61 73 68 54 6f 6b 65 6e 73 28 74 6f 6b 65 6e 73  ashTokens(tokens
0d90: 29 29 7d 66 75 6e 63 74 69 6f 6e 20 73 71 75 61  ))}function squa
0da0: 73 68 54 6f 6b 65 6e 73 28 74 6f 6b 65 6e 73 29  shTokens(tokens)
0db0: 7b 76 61 72 20 73 71 75 61 73 68 65 64 54 6f 6b  {var squashedTok
0dc0: 65 6e 73 3d 5b 5d 3b 76 61 72 20 74 6f 6b 65 6e  ens=[];var token
0dd0: 2c 6c 61 73 74 54 6f 6b 65 6e 3b 66 6f 72 28 76  ,lastToken;for(v
0de0: 61 72 20 69 3d 30 2c 6e 75 6d 54 6f 6b 65 6e 73  ar i=0,numTokens
0df0: 3d 74 6f 6b 65 6e 73 2e 6c 65 6e 67 74 68 3b 69  =tokens.length;i
0e00: 3c 6e 75 6d 54 6f 6b 65 6e 73 3b 2b 2b 69 29 7b  <numTokens;++i){
0e10: 74 6f 6b 65 6e 3d 74 6f 6b 65 6e 73 5b 69 5d 3b  token=tokens[i];
0e20: 69 66 28 74 6f 6b 65 6e 29 7b 69 66 28 74 6f 6b  if(token){if(tok
0e30: 65 6e 5b 30 5d 3d 3d 3d 22 74 65 78 74 22 26 26  en[0]==="text"&&
0e40: 6c 61 73 74 54 6f 6b 65 6e 26 26 6c 61 73 74 54  lastToken&&lastT
0e50: 6f 6b 65 6e 5b 30 5d 3d 3d 3d 22 74 65 78 74 22  oken[0]==="text"
0e60: 29 7b 6c 61 73 74 54 6f 6b 65 6e 5b 31 5d 2b 3d  ){lastToken[1]+=
0e70: 74 6f 6b 65 6e 5b 31 5d 3b 6c 61 73 74 54 6f 6b  token[1];lastTok
0e80: 65 6e 5b 33 5d 3d 74 6f 6b 65 6e 5b 33 5d 7d 65  en[3]=token[3]}e
0e90: 6c 73 65 7b 73 71 75 61 73 68 65 64 54 6f 6b 65  lse{squashedToke
0ea0: 6e 73 2e 70 75 73 68 28 74 6f 6b 65 6e 29 3b 6c  ns.push(token);l
0eb0: 61 73 74 54 6f 6b 65 6e 3d 74 6f 6b 65 6e 7d 7d  astToken=token}}
0ec0: 7d 72 65 74 75 72 6e 20 73 71 75 61 73 68 65 64  }return squashed
0ed0: 54 6f 6b 65 6e 73 7d 66 75 6e 63 74 69 6f 6e 20  Tokens}function 
0ee0: 6e 65 73 74 54 6f 6b 65 6e 73 28 74 6f 6b 65 6e  nestTokens(token
0ef0: 73 29 7b 76 61 72 20 6e 65 73 74 65 64 54 6f 6b  s){var nestedTok
0f00: 65 6e 73 3d 5b 5d 3b 76 61 72 20 63 6f 6c 6c 65  ens=[];var colle
0f10: 63 74 6f 72 3d 6e 65 73 74 65 64 54 6f 6b 65 6e  ctor=nestedToken
0f20: 73 3b 76 61 72 20 73 65 63 74 69 6f 6e 73 3d 5b  s;var sections=[
0f30: 5d 3b 76 61 72 20 74 6f 6b 65 6e 2c 73 65 63 74  ];var token,sect
0f40: 69 6f 6e 3b 66 6f 72 28 76 61 72 20 69 3d 30 2c  ion;for(var i=0,
0f50: 6e 75 6d 54 6f 6b 65 6e 73 3d 74 6f 6b 65 6e 73  numTokens=tokens
0f60: 2e 6c 65 6e 67 74 68 3b 69 3c 6e 75 6d 54 6f 6b  .length;i<numTok
0f70: 65 6e 73 3b 2b 2b 69 29 7b 74 6f 6b 65 6e 3d 74  ens;++i){token=t
0f80: 6f 6b 65 6e 73 5b 69 5d 3b 73 77 69 74 63 68 28  okens[i];switch(
0f90: 74 6f 6b 65 6e 5b 30 5d 29 7b 63 61 73 65 22 23  token[0]){case"#
0fa0: 22 3a 63 61 73 65 22 5e 22 3a 63 6f 6c 6c 65 63  ":case"^":collec
0fb0: 74 6f 72 2e 70 75 73 68 28 74 6f 6b 65 6e 29 3b  tor.push(token);
0fc0: 73 65 63 74 69 6f 6e 73 2e 70 75 73 68 28 74 6f  sections.push(to
0fd0: 6b 65 6e 29 3b 63 6f 6c 6c 65 63 74 6f 72 3d 74  ken);collector=t
0fe0: 6f 6b 65 6e 5b 34 5d 3d 5b 5d 3b 62 72 65 61 6b  oken[4]=[];break
0ff0: 3b 63 61 73 65 22 2f 22 3a 73 65 63 74 69 6f 6e  ;case"/":section
1000: 3d 73 65 63 74 69 6f 6e 73 2e 70 6f 70 28 29 3b  =sections.pop();
1010: 73 65 63 74 69 6f 6e 5b 35 5d 3d 74 6f 6b 65 6e  section[5]=token
1020: 5b 32 5d 3b 63 6f 6c 6c 65 63 74 6f 72 3d 73 65  [2];collector=se
1030: 63 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 3e 30 3f  ctions.length>0?
1040: 73 65 63 74 69 6f 6e 73 5b 73 65 63 74 69 6f 6e  sections[section
1050: 73 2e 6c 65 6e 67 74 68 2d 31 5d 5b 34 5d 3a 6e  s.length-1][4]:n
1060: 65 73 74 65 64 54 6f 6b 65 6e 73 3b 62 72 65 61  estedTokens;brea
1070: 6b 3b 64 65 66 61 75 6c 74 3a 63 6f 6c 6c 65 63  k;default:collec
1080: 74 6f 72 2e 70 75 73 68 28 74 6f 6b 65 6e 29 7d  tor.push(token)}
1090: 7d 72 65 74 75 72 6e 20 6e 65 73 74 65 64 54 6f  }return nestedTo
10a0: 6b 65 6e 73 7d 66 75 6e 63 74 69 6f 6e 20 53 63  kens}function Sc
10b0: 61 6e 6e 65 72 28 73 74 72 69 6e 67 29 7b 74 68  anner(string){th
10c0: 69 73 2e 73 74 72 69 6e 67 3d 73 74 72 69 6e 67  is.string=string
10d0: 3b 74 68 69 73 2e 74 61 69 6c 3d 73 74 72 69 6e  ;this.tail=strin
10e0: 67 3b 74 68 69 73 2e 70 6f 73 3d 30 7d 53 63 61  g;this.pos=0}Sca
10f0: 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 65  nner.prototype.e
1100: 6f 73 3d 66 75 6e 63 74 69 6f 6e 20 65 6f 73 28  os=function eos(
1110: 29 7b 72 65 74 75 72 6e 20 74 68 69 73 2e 74 61  ){return this.ta
1120: 69 6c 3d 3d 3d 22 22 7d 3b 53 63 61 6e 6e 65 72  il===""};Scanner
1130: 2e 70 72 6f 74 6f 74 79 70 65 2e 73 63 61 6e 3d  .prototype.scan=
1140: 66 75 6e 63 74 69 6f 6e 20 73 63 61 6e 28 72 65  function scan(re
1150: 29 7b 76 61 72 20 6d 61 74 63 68 3d 74 68 69 73  ){var match=this
1160: 2e 74 61 69 6c 2e 6d 61 74 63 68 28 72 65 29 3b  .tail.match(re);
1170: 69 66 28 21 6d 61 74 63 68 7c 7c 6d 61 74 63 68  if(!match||match
1180: 2e 69 6e 64 65 78 21 3d 3d 30 29 72 65 74 75 72  .index!==0)retur
1190: 6e 22 22 3b 76 61 72 20 73 74 72 69 6e 67 3d 6d  n"";var string=m
11a0: 61 74 63 68 5b 30 5d 3b 74 68 69 73 2e 74 61 69  atch[0];this.tai
11b0: 6c 3d 74 68 69 73 2e 74 61 69 6c 2e 73 75 62 73  l=this.tail.subs
11c0: 74 72 69 6e 67 28 73 74 72 69 6e 67 2e 6c 65 6e  tring(string.len
11d0: 67 74 68 29 3b 74 68 69 73 2e 70 6f 73 2b 3d 73  gth);this.pos+=s
11e0: 74 72 69 6e 67 2e 6c 65 6e 67 74 68 3b 72 65 74  tring.length;ret
11f0: 75 72 6e 20 73 74 72 69 6e 67 7d 3b 53 63 61 6e  urn string};Scan
1200: 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 63  ner.prototype.sc
1210: 61 6e 55 6e 74 69 6c 3d 66 75 6e 63 74 69 6f 6e  anUntil=function
1220: 20 73 63 61 6e 55 6e 74 69 6c 28 72 65 29 7b 76   scanUntil(re){v
1230: 61 72 20 69 6e 64 65 78 3d 74 68 69 73 2e 74 61  ar index=this.ta
1240: 69 6c 2e 73 65 61 72 63 68 28 72 65 29 2c 6d 61  il.search(re),ma
1250: 74 63 68 3b 73 77 69 74 63 68 28 69 6e 64 65 78  tch;switch(index
1260: 29 7b 63 61 73 65 2d 31 3a 6d 61 74 63 68 3d 74  ){case-1:match=t
1270: 68 69 73 2e 74 61 69 6c 3b 74 68 69 73 2e 74 61  his.tail;this.ta
1280: 69 6c 3d 22 22 3b 62 72 65 61 6b 3b 63 61 73 65  il="";break;case
1290: 20 30 3a 6d 61 74 63 68 3d 22 22 3b 62 72 65 61   0:match="";brea
12a0: 6b 3b 64 65 66 61 75 6c 74 3a 6d 61 74 63 68 3d  k;default:match=
12b0: 74 68 69 73 2e 74 61 69 6c 2e 73 75 62 73 74 72  this.tail.substr
12c0: 69 6e 67 28 30 2c 69 6e 64 65 78 29 3b 74 68 69  ing(0,index);thi
12d0: 73 2e 74 61 69 6c 3d 74 68 69 73 2e 74 61 69 6c  s.tail=this.tail
12e0: 2e 73 75 62 73 74 72 69 6e 67 28 69 6e 64 65 78  .substring(index
12f0: 29 7d 74 68 69 73 2e 70 6f 73 2b 3d 6d 61 74 63  )}this.pos+=matc
1300: 68 2e 6c 65 6e 67 74 68 3b 72 65 74 75 72 6e 20  h.length;return 
1310: 6d 61 74 63 68 7d 3b 66 75 6e 63 74 69 6f 6e 20  match};function 
1320: 43 6f 6e 74 65 78 74 28 76 69 65 77 2c 70 61 72  Context(view,par
1330: 65 6e 74 43 6f 6e 74 65 78 74 29 7b 74 68 69 73  entContext){this
1340: 2e 76 69 65 77 3d 76 69 65 77 3b 74 68 69 73 2e  .view=view;this.
1350: 63 61 63 68 65 3d 7b 22 2e 22 3a 74 68 69 73 2e  cache={".":this.
1360: 76 69 65 77 7d 3b 74 68 69 73 2e 70 61 72 65 6e  view};this.paren
1370: 74 3d 70 61 72 65 6e 74 43 6f 6e 74 65 78 74 7d  t=parentContext}
1380: 43 6f 6e 74 65 78 74 2e 70 72 6f 74 6f 74 79 70  Context.prototyp
1390: 65 2e 70 75 73 68 3d 66 75 6e 63 74 69 6f 6e 20  e.push=function 
13a0: 70 75 73 68 28 76 69 65 77 29 7b 72 65 74 75 72  push(view){retur
13b0: 6e 20 6e 65 77 20 43 6f 6e 74 65 78 74 28 76 69  n new Context(vi
13c0: 65 77 2c 74 68 69 73 29 7d 3b 43 6f 6e 74 65 78  ew,this)};Contex
13d0: 74 2e 70 72 6f 74 6f 74 79 70 65 2e 6c 6f 6f 6b  t.prototype.look
13e0: 75 70 3d 66 75 6e 63 74 69 6f 6e 20 6c 6f 6f 6b  up=function look
13f0: 75 70 28 6e 61 6d 65 29 7b 76 61 72 20 63 61 63  up(name){var cac
1400: 68 65 3d 74 68 69 73 2e 63 61 63 68 65 3b 76 61  he=this.cache;va
1410: 72 20 76 61 6c 75 65 3b 69 66 28 63 61 63 68 65  r value;if(cache
1420: 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28  .hasOwnProperty(
1430: 6e 61 6d 65 29 29 7b 76 61 6c 75 65 3d 63 61 63  name)){value=cac
1440: 68 65 5b 6e 61 6d 65 5d 7d 65 6c 73 65 7b 76 61  he[name]}else{va
1450: 72 20 63 6f 6e 74 65 78 74 3d 74 68 69 73 2c 6e  r context=this,n
1460: 61 6d 65 73 2c 69 6e 64 65 78 2c 6c 6f 6f 6b 75  ames,index,looku
1470: 70 48 69 74 3d 66 61 6c 73 65 3b 77 68 69 6c 65  pHit=false;while
1480: 28 63 6f 6e 74 65 78 74 29 7b 69 66 28 6e 61 6d  (context){if(nam
1490: 65 2e 69 6e 64 65 78 4f 66 28 22 2e 22 29 3e 30  e.indexOf(".")>0
14a0: 29 7b 76 61 6c 75 65 3d 63 6f 6e 74 65 78 74 2e  ){value=context.
14b0: 76 69 65 77 3b 6e 61 6d 65 73 3d 6e 61 6d 65 2e  view;names=name.
14c0: 73 70 6c 69 74 28 22 2e 22 29 3b 69 6e 64 65 78  split(".");index
14d0: 3d 30 3b 77 68 69 6c 65 28 76 61 6c 75 65 21 3d  =0;while(value!=
14e0: 6e 75 6c 6c 26 26 69 6e 64 65 78 3c 6e 61 6d 65  null&&index<name
14f0: 73 2e 6c 65 6e 67 74 68 29 7b 69 66 28 69 6e 64  s.length){if(ind
1500: 65 78 3d 3d 3d 6e 61 6d 65 73 2e 6c 65 6e 67 74  ex===names.lengt
1510: 68 2d 31 29 6c 6f 6f 6b 75 70 48 69 74 3d 68 61  h-1)lookupHit=ha
1520: 73 50 72 6f 70 65 72 74 79 28 76 61 6c 75 65 2c  sProperty(value,
1530: 6e 61 6d 65 73 5b 69 6e 64 65 78 5d 29 3b 76 61  names[index]);va
1540: 6c 75 65 3d 76 61 6c 75 65 5b 6e 61 6d 65 73 5b  lue=value[names[
1550: 69 6e 64 65 78 2b 2b 5d 5d 7d 7d 65 6c 73 65 7b  index++]]}}else{
1560: 76 61 6c 75 65 3d 63 6f 6e 74 65 78 74 2e 76 69  value=context.vi
1570: 65 77 5b 6e 61 6d 65 5d 3b 6c 6f 6f 6b 75 70 48  ew[name];lookupH
1580: 69 74 3d 68 61 73 50 72 6f 70 65 72 74 79 28 63  it=hasProperty(c
1590: 6f 6e 74 65 78 74 2e 76 69 65 77 2c 6e 61 6d 65  ontext.view,name
15a0: 29 7d 69 66 28 6c 6f 6f 6b 75 70 48 69 74 29 62  )}if(lookupHit)b
15b0: 72 65 61 6b 3b 63 6f 6e 74 65 78 74 3d 63 6f 6e  reak;context=con
15c0: 74 65 78 74 2e 70 61 72 65 6e 74 7d 63 61 63 68  text.parent}cach
15d0: 65 5b 6e 61 6d 65 5d 3d 76 61 6c 75 65 7d 69 66  e[name]=value}if
15e0: 28 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c 75  (isFunction(valu
15f0: 65 29 29 76 61 6c 75 65 3d 76 61 6c 75 65 2e 63  e))value=value.c
1600: 61 6c 6c 28 74 68 69 73 2e 76 69 65 77 29 3b 72  all(this.view);r
1610: 65 74 75 72 6e 20 76 61 6c 75 65 7d 3b 66 75 6e  eturn value};fun
1620: 63 74 69 6f 6e 20 57 72 69 74 65 72 28 29 7b 74  ction Writer(){t
1630: 68 69 73 2e 63 61 63 68 65 3d 7b 7d 7d 57 72 69  his.cache={}}Wri
1640: 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6c  ter.prototype.cl
1650: 65 61 72 43 61 63 68 65 3d 66 75 6e 63 74 69 6f  earCache=functio
1660: 6e 20 63 6c 65 61 72 43 61 63 68 65 28 29 7b 74  n clearCache(){t
1670: 68 69 73 2e 63 61 63 68 65 3d 7b 7d 7d 3b 57 72  his.cache={}};Wr
1680: 69 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70  iter.prototype.p
1690: 61 72 73 65 3d 66 75 6e 63 74 69 6f 6e 20 70 61  arse=function pa
16a0: 72 73 65 28 74 65 6d 70 6c 61 74 65 2c 74 61 67  rse(template,tag
16b0: 73 29 7b 76 61 72 20 63 61 63 68 65 3d 74 68 69  s){var cache=thi
16c0: 73 2e 63 61 63 68 65 3b 76 61 72 20 74 6f 6b 65  s.cache;var toke
16d0: 6e 73 3d 63 61 63 68 65 5b 74 65 6d 70 6c 61 74  ns=cache[templat
16e0: 65 5d 3b 69 66 28 74 6f 6b 65 6e 73 3d 3d 6e 75  e];if(tokens==nu
16f0: 6c 6c 29 74 6f 6b 65 6e 73 3d 63 61 63 68 65 5b  ll)tokens=cache[
1700: 74 65 6d 70 6c 61 74 65 5d 3d 70 61 72 73 65 54  template]=parseT
1710: 65 6d 70 6c 61 74 65 28 74 65 6d 70 6c 61 74 65  emplate(template
1720: 2c 74 61 67 73 29 3b 72 65 74 75 72 6e 20 74 6f  ,tags);return to
1730: 6b 65 6e 73 7d 3b 57 72 69 74 65 72 2e 70 72 6f  kens};Writer.pro
1740: 74 6f 74 79 70 65 2e 72 65 6e 64 65 72 3d 66 75  totype.render=fu
1750: 6e 63 74 69 6f 6e 20 72 65 6e 64 65 72 28 74 65  nction render(te
1760: 6d 70 6c 61 74 65 2c 76 69 65 77 2c 70 61 72 74  mplate,view,part
1770: 69 61 6c 73 29 7b 76 61 72 20 74 6f 6b 65 6e 73  ials){var tokens
1780: 3d 74 68 69 73 2e 70 61 72 73 65 28 74 65 6d 70  =this.parse(temp
1790: 6c 61 74 65 29 3b 76 61 72 20 63 6f 6e 74 65 78  late);var contex
17a0: 74 3d 76 69 65 77 20 69 6e 73 74 61 6e 63 65 6f  t=view instanceo
17b0: 66 20 43 6f 6e 74 65 78 74 3f 76 69 65 77 3a 6e  f Context?view:n
17c0: 65 77 20 43 6f 6e 74 65 78 74 28 76 69 65 77 29  ew Context(view)
17d0: 3b 72 65 74 75 72 6e 20 74 68 69 73 2e 72 65 6e  ;return this.ren
17e0: 64 65 72 54 6f 6b 65 6e 73 28 74 6f 6b 65 6e 73  derTokens(tokens
17f0: 2c 63 6f 6e 74 65 78 74 2c 70 61 72 74 69 61 6c  ,context,partial
1800: 73 2c 74 65 6d 70 6c 61 74 65 29 7d 3b 57 72 69  s,template)};Wri
1810: 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 72 65  ter.prototype.re
1820: 6e 64 65 72 54 6f 6b 65 6e 73 3d 66 75 6e 63 74  nderTokens=funct
1830: 69 6f 6e 20 72 65 6e 64 65 72 54 6f 6b 65 6e 73  ion renderTokens
1840: 28 74 6f 6b 65 6e 73 2c 63 6f 6e 74 65 78 74 2c  (tokens,context,
1850: 70 61 72 74 69 61 6c 73 2c 6f 72 69 67 69 6e 61  partials,origina
1860: 6c 54 65 6d 70 6c 61 74 65 29 7b 76 61 72 20 62  lTemplate){var b
1870: 75 66 66 65 72 3d 22 22 3b 76 61 72 20 74 6f 6b  uffer="";var tok
1880: 65 6e 2c 73 79 6d 62 6f 6c 2c 76 61 6c 75 65 3b  en,symbol,value;
1890: 66 6f 72 28 76 61 72 20 69 3d 30 2c 6e 75 6d 54  for(var i=0,numT
18a0: 6f 6b 65 6e 73 3d 74 6f 6b 65 6e 73 2e 6c 65 6e  okens=tokens.len
18b0: 67 74 68 3b 69 3c 6e 75 6d 54 6f 6b 65 6e 73 3b  gth;i<numTokens;
18c0: 2b 2b 69 29 7b 76 61 6c 75 65 3d 75 6e 64 65 66  ++i){value=undef
18d0: 69 6e 65 64 3b 74 6f 6b 65 6e 3d 74 6f 6b 65 6e  ined;token=token
18e0: 73 5b 69 5d 3b 73 79 6d 62 6f 6c 3d 74 6f 6b 65  s[i];symbol=toke
18f0: 6e 5b 30 5d 3b 69 66 28 73 79 6d 62 6f 6c 3d 3d  n[0];if(symbol==
1900: 3d 22 23 22 29 76 61 6c 75 65 3d 74 68 69 73 2e  ="#")value=this.
1910: 72 65 6e 64 65 72 53 65 63 74 69 6f 6e 28 74 6f  renderSection(to
1920: 6b 65 6e 2c 63 6f 6e 74 65 78 74 2c 70 61 72 74  ken,context,part
1930: 69 61 6c 73 2c 6f 72 69 67 69 6e 61 6c 54 65 6d  ials,originalTem
1940: 70 6c 61 74 65 29 3b 65 6c 73 65 20 69 66 28 73  plate);else if(s
1950: 79 6d 62 6f 6c 3d 3d 3d 22 5e 22 29 76 61 6c 75  ymbol==="^")valu
1960: 65 3d 74 68 69 73 2e 72 65 6e 64 65 72 49 6e 76  e=this.renderInv
1970: 65 72 74 65 64 28 74 6f 6b 65 6e 2c 63 6f 6e 74  erted(token,cont
1980: 65 78 74 2c 70 61 72 74 69 61 6c 73 2c 6f 72 69  ext,partials,ori
1990: 67 69 6e 61 6c 54 65 6d 70 6c 61 74 65 29 3b 65  ginalTemplate);e
19a0: 6c 73 65 20 69 66 28 73 79 6d 62 6f 6c 3d 3d 3d  lse if(symbol===
19b0: 22 3e 22 29 76 61 6c 75 65 3d 74 68 69 73 2e 72  ">")value=this.r
19c0: 65 6e 64 65 72 50 61 72 74 69 61 6c 28 74 6f 6b  enderPartial(tok
19d0: 65 6e 2c 63 6f 6e 74 65 78 74 2c 70 61 72 74 69  en,context,parti
19e0: 61 6c 73 2c 6f 72 69 67 69 6e 61 6c 54 65 6d 70  als,originalTemp
19f0: 6c 61 74 65 29 3b 65 6c 73 65 20 69 66 28 73 79  late);else if(sy
1a00: 6d 62 6f 6c 3d 3d 3d 22 26 22 29 76 61 6c 75 65  mbol==="&")value
1a10: 3d 74 68 69 73 2e 75 6e 65 73 63 61 70 65 64 56  =this.unescapedV
1a20: 61 6c 75 65 28 74 6f 6b 65 6e 2c 63 6f 6e 74 65  alue(token,conte
1a30: 78 74 29 3b 65 6c 73 65 20 69 66 28 73 79 6d 62  xt);else if(symb
1a40: 6f 6c 3d 3d 3d 22 6e 61 6d 65 22 29 76 61 6c 75  ol==="name")valu
1a50: 65 3d 74 68 69 73 2e 65 73 63 61 70 65 64 56 61  e=this.escapedVa
1a60: 6c 75 65 28 74 6f 6b 65 6e 2c 63 6f 6e 74 65 78  lue(token,contex
1a70: 74 29 3b 65 6c 73 65 20 69 66 28 73 79 6d 62 6f  t);else if(symbo
1a80: 6c 3d 3d 3d 22 74 65 78 74 22 29 76 61 6c 75 65  l==="text")value
1a90: 3d 74 68 69 73 2e 72 61 77 56 61 6c 75 65 28 74  =this.rawValue(t
1aa0: 6f 6b 65 6e 29 3b 69 66 28 76 61 6c 75 65 21 3d  oken);if(value!=
1ab0: 3d 75 6e 64 65 66 69 6e 65 64 29 62 75 66 66 65  =undefined)buffe
1ac0: 72 2b 3d 76 61 6c 75 65 7d 72 65 74 75 72 6e 20  r+=value}return 
1ad0: 62 75 66 66 65 72 7d 3b 57 72 69 74 65 72 2e 70  buffer};Writer.p
1ae0: 72 6f 74 6f 74 79 70 65 2e 72 65 6e 64 65 72 53  rototype.renderS
1af0: 65 63 74 69 6f 6e 3d 66 75 6e 63 74 69 6f 6e 20  ection=function 
1b00: 72 65 6e 64 65 72 53 65 63 74 69 6f 6e 28 74 6f  renderSection(to
1b10: 6b 65 6e 2c 63 6f 6e 74 65 78 74 2c 70 61 72 74  ken,context,part
1b20: 69 61 6c 73 2c 6f 72 69 67 69 6e 61 6c 54 65 6d  ials,originalTem
1b30: 70 6c 61 74 65 29 7b 76 61 72 20 73 65 6c 66 3d  plate){var self=
1b40: 74 68 69 73 3b 76 61 72 20 62 75 66 66 65 72 3d  this;var buffer=
1b50: 22 22 3b 76 61 72 20 76 61 6c 75 65 3d 63 6f 6e  "";var value=con
1b60: 74 65 78 74 2e 6c 6f 6f 6b 75 70 28 74 6f 6b 65  text.lookup(toke
1b70: 6e 5b 31 5d 29 3b 66 75 6e 63 74 69 6f 6e 20 73  n[1]);function s
1b80: 75 62 52 65 6e 64 65 72 28 74 65 6d 70 6c 61 74  ubRender(templat
1b90: 65 29 7b 72 65 74 75 72 6e 20 73 65 6c 66 2e 72  e){return self.r
1ba0: 65 6e 64 65 72 28 74 65 6d 70 6c 61 74 65 2c 63  ender(template,c
1bb0: 6f 6e 74 65 78 74 2c 70 61 72 74 69 61 6c 73 29  ontext,partials)
1bc0: 7d 69 66 28 21 76 61 6c 75 65 29 72 65 74 75 72  }if(!value)retur
1bd0: 6e 3b 69 66 28 69 73 41 72 72 61 79 28 76 61 6c  n;if(isArray(val
1be0: 75 65 29 29 7b 66 6f 72 28 76 61 72 20 6a 3d 30  ue)){for(var j=0
1bf0: 2c 76 61 6c 75 65 4c 65 6e 67 74 68 3d 76 61 6c  ,valueLength=val
1c00: 75 65 2e 6c 65 6e 67 74 68 3b 6a 3c 76 61 6c 75  ue.length;j<valu
1c10: 65 4c 65 6e 67 74 68 3b 2b 2b 6a 29 7b 62 75 66  eLength;++j){buf
1c20: 66 65 72 2b 3d 74 68 69 73 2e 72 65 6e 64 65 72  fer+=this.render
1c30: 54 6f 6b 65 6e 73 28 74 6f 6b 65 6e 5b 34 5d 2c  Tokens(token[4],
1c40: 63 6f 6e 74 65 78 74 2e 70 75 73 68 28 76 61 6c  context.push(val
1c50: 75 65 5b 6a 5d 29 2c 70 61 72 74 69 61 6c 73 2c  ue[j]),partials,
1c60: 6f 72 69 67 69 6e 61 6c 54 65 6d 70 6c 61 74 65  originalTemplate
1c70: 29 7d 7d 65 6c 73 65 20 69 66 28 74 79 70 65 6f  )}}else if(typeo
1c80: 66 20 76 61 6c 75 65 3d 3d 3d 22 6f 62 6a 65 63  f value==="objec
1c90: 74 22 7c 7c 74 79 70 65 6f 66 20 76 61 6c 75 65  t"||typeof value
1ca0: 3d 3d 3d 22 73 74 72 69 6e 67 22 7c 7c 74 79 70  ==="string"||typ
1cb0: 65 6f 66 20 76 61 6c 75 65 3d 3d 3d 22 6e 75 6d  eof value==="num
1cc0: 62 65 72 22 29 7b 62 75 66 66 65 72 2b 3d 74 68  ber"){buffer+=th
1cd0: 69 73 2e 72 65 6e 64 65 72 54 6f 6b 65 6e 73 28  is.renderTokens(
1ce0: 74 6f 6b 65 6e 5b 34 5d 2c 63 6f 6e 74 65 78 74  token[4],context
1cf0: 2e 70 75 73 68 28 76 61 6c 75 65 29 2c 70 61 72  .push(value),par
1d00: 74 69 61 6c 73 2c 6f 72 69 67 69 6e 61 6c 54 65  tials,originalTe
1d10: 6d 70 6c 61 74 65 29 7d 65 6c 73 65 20 69 66 28  mplate)}else if(
1d20: 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c 75 65  isFunction(value
1d30: 29 29 7b 69 66 28 74 79 70 65 6f 66 20 6f 72 69  )){if(typeof ori
1d40: 67 69 6e 61 6c 54 65 6d 70 6c 61 74 65 21 3d 3d  ginalTemplate!==
1d50: 22 73 74 72 69 6e 67 22 29 74 68 72 6f 77 20 6e  "string")throw n
1d60: 65 77 20 45 72 72 6f 72 28 22 43 61 6e 6e 6f 74  ew Error("Cannot
1d70: 20 75 73 65 20 68 69 67 68 65 72 2d 6f 72 64 65   use higher-orde
1d80: 72 20 73 65 63 74 69 6f 6e 73 20 77 69 74 68 6f  r sections witho
1d90: 75 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  ut the original 
1da0: 74 65 6d 70 6c 61 74 65 22 29 3b 76 61 6c 75 65  template");value
1db0: 3d 76 61 6c 75 65 2e 63 61 6c 6c 28 63 6f 6e 74  =value.call(cont
1dc0: 65 78 74 2e 76 69 65 77 2c 6f 72 69 67 69 6e 61  ext.view,origina
1dd0: 6c 54 65 6d 70 6c 61 74 65 2e 73 6c 69 63 65 28  lTemplate.slice(
1de0: 74 6f 6b 65 6e 5b 33 5d 2c 74 6f 6b 65 6e 5b 35  token[3],token[5
1df0: 5d 29 2c 73 75 62 52 65 6e 64 65 72 29 3b 69 66  ]),subRender);if
1e00: 28 76 61 6c 75 65 21 3d 6e 75 6c 6c 29 62 75 66  (value!=null)buf
1e10: 66 65 72 2b 3d 76 61 6c 75 65 7d 65 6c 73 65 7b  fer+=value}else{
1e20: 62 75 66 66 65 72 2b 3d 74 68 69 73 2e 72 65 6e  buffer+=this.ren
1e30: 64 65 72 54 6f 6b 65 6e 73 28 74 6f 6b 65 6e 5b  derTokens(token[
1e40: 34 5d 2c 63 6f 6e 74 65 78 74 2c 70 61 72 74 69  4],context,parti
1e50: 61 6c 73 2c 6f 72 69 67 69 6e 61 6c 54 65 6d 70  als,originalTemp
1e60: 6c 61 74 65 29 7d 72 65 74 75 72 6e 20 62 75 66  late)}return buf
1e70: 66 65 72 7d 3b 57 72 69 74 65 72 2e 70 72 6f 74  fer};Writer.prot
1e80: 6f 74 79 70 65 2e 72 65 6e 64 65 72 49 6e 76 65  otype.renderInve
1e90: 72 74 65 64 3d 66 75 6e 63 74 69 6f 6e 20 72 65  rted=function re
1ea0: 6e 64 65 72 49 6e 76 65 72 74 65 64 28 74 6f 6b  nderInverted(tok
1eb0: 65 6e 2c 63 6f 6e 74 65 78 74 2c 70 61 72 74 69  en,context,parti
1ec0: 61 6c 73 2c 6f 72 69 67 69 6e 61 6c 54 65 6d 70  als,originalTemp
1ed0: 6c 61 74 65 29 7b 76 61 72 20 76 61 6c 75 65 3d  late){var value=
1ee0: 63 6f 6e 74 65 78 74 2e 6c 6f 6f 6b 75 70 28 74  context.lookup(t
1ef0: 6f 6b 65 6e 5b 31 5d 29 3b 69 66 28 21 76 61 6c  oken[1]);if(!val
1f00: 75 65 7c 7c 69 73 41 72 72 61 79 28 76 61 6c 75  ue||isArray(valu
1f10: 65 29 26 26 76 61 6c 75 65 2e 6c 65 6e 67 74 68  e)&&value.length
1f20: 3d 3d 3d 30 29 72 65 74 75 72 6e 20 74 68 69 73  ===0)return this
1f30: 2e 72 65 6e 64 65 72 54 6f 6b 65 6e 73 28 74 6f  .renderTokens(to
1f40: 6b 65 6e 5b 34 5d 2c 63 6f 6e 74 65 78 74 2c 70  ken[4],context,p
1f50: 61 72 74 69 61 6c 73 2c 6f 72 69 67 69 6e 61 6c  artials,original
1f60: 54 65 6d 70 6c 61 74 65 29 7d 3b 57 72 69 74 65  Template)};Write
1f70: 72 2e 70 72 6f 74 6f 74 79 70 65 2e 72 65 6e 64  r.prototype.rend
1f80: 65 72 50 61 72 74 69 61 6c 3d 66 75 6e 63 74 69  erPartial=functi
1f90: 6f 6e 20 72 65 6e 64 65 72 50 61 72 74 69 61 6c  on renderPartial
1fa0: 28 74 6f 6b 65 6e 2c 63 6f 6e 74 65 78 74 2c 70  (token,context,p
1fb0: 61 72 74 69 61 6c 73 29 7b 69 66 28 21 70 61 72  artials){if(!par
1fc0: 74 69 61 6c 73 29 72 65 74 75 72 6e 3b 76 61 72  tials)return;var
1fd0: 20 76 61 6c 75 65 3d 69 73 46 75 6e 63 74 69 6f   value=isFunctio
1fe0: 6e 28 70 61 72 74 69 61 6c 73 29 3f 70 61 72 74  n(partials)?part
1ff0: 69 61 6c 73 28 74 6f 6b 65 6e 5b 31 5d 29 3a 70  ials(token[1]):p
2000: 61 72 74 69 61 6c 73 5b 74 6f 6b 65 6e 5b 31 5d  artials[token[1]
2010: 5d 3b 69 66 28 76 61 6c 75 65 21 3d 6e 75 6c 6c  ];if(value!=null
2020: 29 72 65 74 75 72 6e 20 74 68 69 73 2e 72 65 6e  )return this.ren
2030: 64 65 72 54 6f 6b 65 6e 73 28 74 68 69 73 2e 70  derTokens(this.p
2040: 61 72 73 65 28 76 61 6c 75 65 29 2c 63 6f 6e 74  arse(value),cont
2050: 65 78 74 2c 70 61 72 74 69 61 6c 73 2c 76 61 6c  ext,partials,val
2060: 75 65 29 7d 3b 57 72 69 74 65 72 2e 70 72 6f 74  ue)};Writer.prot
2070: 6f 74 79 70 65 2e 75 6e 65 73 63 61 70 65 64 56  otype.unescapedV
2080: 61 6c 75 65 3d 66 75 6e 63 74 69 6f 6e 20 75 6e  alue=function un
2090: 65 73 63 61 70 65 64 56 61 6c 75 65 28 74 6f 6b  escapedValue(tok
20a0: 65 6e 2c 63 6f 6e 74 65 78 74 29 7b 76 61 72 20  en,context){var 
20b0: 76 61 6c 75 65 3d 63 6f 6e 74 65 78 74 2e 6c 6f  value=context.lo
20c0: 6f 6b 75 70 28 74 6f 6b 65 6e 5b 31 5d 29 3b 69  okup(token[1]);i
20d0: 66 28 76 61 6c 75 65 21 3d 6e 75 6c 6c 29 72 65  f(value!=null)re
20e0: 74 75 72 6e 20 76 61 6c 75 65 7d 3b 57 72 69 74  turn value};Writ
20f0: 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 65 73 63  er.prototype.esc
2100: 61 70 65 64 56 61 6c 75 65 3d 66 75 6e 63 74 69  apedValue=functi
2110: 6f 6e 20 65 73 63 61 70 65 64 56 61 6c 75 65 28  on escapedValue(
2120: 74 6f 6b 65 6e 2c 63 6f 6e 74 65 78 74 29 7b 76  token,context){v
2130: 61 72 20 76 61 6c 75 65 3d 63 6f 6e 74 65 78 74  ar value=context
2140: 2e 6c 6f 6f 6b 75 70 28 74 6f 6b 65 6e 5b 31 5d  .lookup(token[1]
2150: 29 3b 69 66 28 76 61 6c 75 65 21 3d 6e 75 6c 6c  );if(value!=null
2160: 29 72 65 74 75 72 6e 20 6d 75 73 74 61 63 68 65  )return mustache
2170: 2e 65 73 63 61 70 65 28 76 61 6c 75 65 29 7d 3b  .escape(value)};
2180: 57 72 69 74 65 72 2e 70 72 6f 74 6f 74 79 70 65  Writer.prototype
2190: 2e 72 61 77 56 61 6c 75 65 3d 66 75 6e 63 74 69  .rawValue=functi
21a0: 6f 6e 20 72 61 77 56 61 6c 75 65 28 74 6f 6b 65  on rawValue(toke
21b0: 6e 29 7b 72 65 74 75 72 6e 20 74 6f 6b 65 6e 5b  n){return token[
21c0: 31 5d 7d 3b 6d 75 73 74 61 63 68 65 2e 6e 61 6d  1]};mustache.nam
21d0: 65 3d 22 6d 75 73 74 61 63 68 65 2e 6a 73 22 3b  e="mustache.js";
21e0: 6d 75 73 74 61 63 68 65 2e 76 65 72 73 69 6f 6e  mustache.version
21f0: 3d 22 32 2e 33 2e 30 22 3b 6d 75 73 74 61 63 68  ="2.3.0";mustach
2200: 65 2e 74 61 67 73 3d 5b 22 7b 7b 22 2c 22 7d 7d  e.tags=["{{","}}
2210: 22 5d 3b 76 61 72 20 64 65 66 61 75 6c 74 57 72  "];var defaultWr
2220: 69 74 65 72 3d 6e 65 77 20 57 72 69 74 65 72 3b  iter=new Writer;
2230: 6d 75 73 74 61 63 68 65 2e 63 6c 65 61 72 43 61  mustache.clearCa
2240: 63 68 65 3d 66 75 6e 63 74 69 6f 6e 20 63 6c 65  che=function cle
2250: 61 72 43 61 63 68 65 28 29 7b 72 65 74 75 72 6e  arCache(){return
2260: 20 64 65 66 61 75 6c 74 57 72 69 74 65 72 2e 63   defaultWriter.c
2270: 6c 65 61 72 43 61 63 68 65 28 29 7d 3b 6d 75 73  learCache()};mus
2280: 74 61 63 68 65 2e 70 61 72 73 65 3d 66 75 6e 63  tache.parse=func
2290: 74 69 6f 6e 20 70 61 72 73 65 28 74 65 6d 70 6c  tion parse(templ
22a0: 61 74 65 2c 74 61 67 73 29 7b 72 65 74 75 72 6e  ate,tags){return
22b0: 20 64 65 66 61 75 6c 74 57 72 69 74 65 72 2e 70   defaultWriter.p
22c0: 61 72 73 65 28 74 65 6d 70 6c 61 74 65 2c 74 61  arse(template,ta
22d0: 67 73 29 7d 3b 6d 75 73 74 61 63 68 65 2e 72 65  gs)};mustache.re
22e0: 6e 64 65 72 3d 66 75 6e 63 74 69 6f 6e 20 72 65  nder=function re
22f0: 6e 64 65 72 28 74 65 6d 70 6c 61 74 65 2c 76 69  nder(template,vi
2300: 65 77 2c 70 61 72 74 69 61 6c 73 29 7b 69 66 28  ew,partials){if(
2310: 74 79 70 65 6f 66 20 74 65 6d 70 6c 61 74 65 21  typeof template!
2320: 3d 3d 22 73 74 72 69 6e 67 22 29 7b 74 68 72 6f  =="string"){thro
2330: 77 20 6e 65 77 20 54 79 70 65 45 72 72 6f 72 28  w new TypeError(
2340: 27 49 6e 76 61 6c 69 64 20 74 65 6d 70 6c 61 74  'Invalid templat
2350: 65 21 20 54 65 6d 70 6c 61 74 65 20 73 68 6f 75  e! Template shou
2360: 6c 64 20 62 65 20 61 20 22 73 74 72 69 6e 67 22  ld be a "string"
2370: 20 27 2b 27 62 75 74 20 22 27 2b 74 79 70 65 53   '+'but "'+typeS
2380: 74 72 28 74 65 6d 70 6c 61 74 65 29 2b 27 22 20  tr(template)+'" 
2390: 77 61 73 20 67 69 76 65 6e 20 61 73 20 74 68 65  was given as the
23a0: 20 66 69 72 73 74 20 27 2b 22 61 72 67 75 6d 65   first '+"argume
23b0: 6e 74 20 66 6f 72 20 6d 75 73 74 61 63 68 65 23  nt for mustache#
23c0: 72 65 6e 64 65 72 28 74 65 6d 70 6c 61 74 65 2c  render(template,
23d0: 20 76 69 65 77 2c 20 70 61 72 74 69 61 6c 73 29   view, partials)
23e0: 22 29 7d 72 65 74 75 72 6e 20 64 65 66 61 75 6c  ")}return defaul
23f0: 74 57 72 69 74 65 72 2e 72 65 6e 64 65 72 28 74  tWriter.render(t
2400: 65 6d 70 6c 61 74 65 2c 76 69 65 77 2c 70 61 72  emplate,view,par
2410: 74 69 61 6c 73 29 7d 3b 6d 75 73 74 61 63 68 65  tials)};mustache
2420: 2e 74 6f 5f 68 74 6d 6c 3d 66 75 6e 63 74 69 6f  .to_html=functio
2430: 6e 20 74 6f 5f 68 74 6d 6c 28 74 65 6d 70 6c 61  n to_html(templa
2440: 74 65 2c 76 69 65 77 2c 70 61 72 74 69 61 6c 73  te,view,partials
2450: 2c 73 65 6e 64 29 7b 76 61 72 20 72 65 73 75 6c  ,send){var resul
2460: 74 3d 6d 75 73 74 61 63 68 65 2e 72 65 6e 64 65  t=mustache.rende
2470: 72 28 74 65 6d 70 6c 61 74 65 2c 76 69 65 77 2c  r(template,view,
2480: 70 61 72 74 69 61 6c 73 29 3b 69 66 28 69 73 46  partials);if(isF
2490: 75 6e 63 74 69 6f 6e 28 73 65 6e 64 29 29 7b 73  unction(send)){s
24a0: 65 6e 64 28 72 65 73 75 6c 74 29 7d 65 6c 73 65  end(result)}else
24b0: 7b 72 65 74 75 72 6e 20 72 65 73 75 6c 74 7d 7d  {return result}}
24c0: 3b 6d 75 73 74 61 63 68 65 2e 65 73 63 61 70 65  ;mustache.escape
24d0: 3d 65 73 63 61 70 65 48 74 6d 6c 3b 6d 75 73 74  =escapeHtml;must
24e0: 61 63 68 65 2e 53 63 61 6e 6e 65 72 3d 53 63 61  ache.Scanner=Sca
24f0: 6e 6e 65 72 3b 6d 75 73 74 61 63 68 65 2e 43 6f  nner;mustache.Co
2500: 6e 74 65 78 74 3d 43 6f 6e 74 65 78 74 3b 6d 75  ntext=Context;mu
2510: 73 74 61 63 68 65 2e 57 72 69 74 65 72 3d 57 72  stache.Writer=Wr
2520: 69 74 65 72 3b 72 65 74 75 72 6e 20 6d 75 73 74  iter;return must
2530: 61 63 68 65 7d 29 3b 0a                          ache});.