emblem-source 0.3.16 → 0.3.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/dist/emblem.js +1397 -653
  3. data/dist/emblem.min.js +2 -2
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6832a949d3d60ef512fc82751402a74bee84f208
4
- data.tar.gz: e8fff194f1060f4f507c2509e6589b651f9d8ae5
3
+ metadata.gz: 732ecf68e12e7752395c72008a5aa9967b4bebea
4
+ data.tar.gz: a9744e476ba1f08f3317e655dbae9afcc77bd237
5
5
  SHA512:
6
- metadata.gz: 4dbd678ee420827fa4a704fee65b3cdb1767a39e9a5a4aef5d628dd50eff77a6ed2646595a0d749c5df3fcca8a1856ae7a057123ca9482bf12c203053f153dad
7
- data.tar.gz: f6a8ec1ef521dfb48ab58ff7e822f30065f379bec3f0d73e35ca15427d6baa1ec4d63263819a57fbca111b736ea234d3df473d16f44a91487f1accb12d9c9aaa
6
+ metadata.gz: 131014ea631288849c06b904e314e064da915cafb25a987a6df7168da18256d73d86a212bfe24d389490178957bfed121b33fb710660addaa69008e6905f443e
7
+ data.tar.gz: 6f5344174dc787cb4f47c0141e12fad36ca29a740eed2c3fa3a51ef309cf67621f2ea935ea9134303b9ed204cf33251725d9ef1f85e08b9b870cec1e8c8f07cb
@@ -103,7 +103,7 @@ this.Emblem = {};
103
103
 
104
104
  Emblem = this.Emblem;
105
105
 
106
- Emblem.VERSION = "0.3.16";
106
+ Emblem.VERSION = "0.3.17";
107
107
 
108
108
  module.exports = Emblem;
109
109
 
@@ -295,7 +295,10 @@ Emblem.Parser = (function() {
295
295
  },
296
296
  peg$c28 = function(c) { return c; },
297
297
  peg$c29 = function(m) { return [m]; },
298
- peg$c30 = function(h, nested) {
298
+ peg$c30 = "]",
299
+ peg$c31 = "\"]\"",
300
+ peg$c32 = function(h) { return h;},
301
+ peg$c33 = function(h, nested) {
299
302
  // h is [[open tag content], closing tag ContentNode]
300
303
  var ret = h[0];
301
304
  if(nested) { ret = ret.concat(nested); }
@@ -305,8 +308,11 @@ Emblem.Parser = (function() {
305
308
 
306
309
  return ret;
307
310
  },
308
- peg$c31 = function(mustacheNode, nestedContentProgramNode) {
309
- if (!nestedContentProgramNode) { return mustacheNode; }
311
+ peg$c34 = function(mustacheNode, nestedContentProgramNode) {
312
+
313
+ if (!nestedContentProgramNode) {
314
+ return mustacheNode;
315
+ }
310
316
 
311
317
  var close = mustacheNode.id;
312
318
  if (use11AST) {
@@ -316,21 +322,26 @@ Emblem.Parser = (function() {
316
322
  right: false
317
323
  };
318
324
  }
319
-
320
325
  var block = new AST.BlockNode(mustacheNode, nestedContentProgramNode, nestedContentProgramNode.inverse, close);
326
+
321
327
  block.path = mustacheNode.id;
322
328
  return block;
323
329
  },
324
- peg$c32 = ": ",
325
- peg$c33 = "\": \"",
326
- peg$c34 = function(statements) { return createProgramNode(statements, []); },
327
- peg$c35 = function(block) { return block && block[2]; },
328
- peg$c36 = function(e, ret) {
330
+ peg$c35 = ": ",
331
+ peg$c36 = "\": \"",
332
+ peg$c37 = function(statements) { return createProgramNode(statements, []); },
333
+ peg$c38 = function(block) {return block && block[2]; },
334
+ peg$c39 = function(block) {
335
+ return block;
336
+ },
337
+ peg$c40 = function(e, ret) {
329
338
  var mustache = ret.mustache || ret;
330
339
  mustache.escaped = e;
331
340
  return ret;
332
341
  },
333
- peg$c37 = function(isPartial, sexpr) {
342
+ peg$c41 = "[",
343
+ peg$c42 = "\"[\"",
344
+ peg$c43 = function(isPartial, sexpr) {
334
345
  if(isPartial) {
335
346
  var n = new AST.PartialNameNode(new AST.StringNode(sexpr.id.string));
336
347
  return new AST.PartialNode(n, sexpr.params[0]);
@@ -351,91 +362,51 @@ Emblem.Parser = (function() {
351
362
  } else if(tm === '^') {
352
363
  return unshiftParam(mustacheNode, 'unless');
353
364
  }
354
-
355
365
  return mustacheNode;
356
366
  },
357
- peg$c38 = function(path, params, hash) {
358
- var actualParams = [];
359
- var attrs = {};
360
- var hasAttrs = false;
361
-
362
- // Convert shorthand html attributes (e.g. % = tagName, . = class, etc)
363
- for(var i = 0; i < params.length; ++i) {
364
- var p = params[i];
365
- var attrKey = p[0];
366
- if(attrKey == 'tagName' || attrKey == 'elementId' || attrKey == 'class') {
367
- hasAttrs = true;
368
- attrs[attrKey] = attrs[attrKey] || [];
369
- attrs[attrKey].push(p[1]);
370
- } else {
371
- actualParams.push(p);
372
- }
373
- }
374
-
375
- if(hasAttrs) {
376
- hash = hash || new AST.HashNode([]);
377
- for(var k in attrs) {
378
- if(!attrs.hasOwnProperty(k)) continue;
379
- hash.pairs.push([k, new AST.StringNode(attrs[k].join(' '))]);
380
- }
381
- }
382
-
383
- actualParams.unshift(path);
384
-
385
- if (useSexprNodes) {
386
- return new AST.SexprNode(actualParams, hash);
387
- } else {
388
- // Stub a sexpr-like node for backwards compatibility with pre-1.3 AST.
389
- return {
390
- id: actualParams[0],
391
- params: actualParams.slice(1),
392
- hash: hash
393
- };
394
- }
395
- },
396
- peg$c39 = function(t) { return ['tagName', t]; },
397
- peg$c40 = function(i) { return ['elementId', i]; },
398
- peg$c41 = function(c) { return ['class', c]; },
399
- peg$c42 = function(a) {
367
+ peg$c44 = " [",
368
+ peg$c45 = "\" [\"",
369
+ peg$c46 = function(path, params, hash) { return parseSexpr(path, params, hash) },
370
+ peg$c47 = function(t) { return ['tagName', t]; },
371
+ peg$c48 = function(i) { return ['elementId', i]; },
372
+ peg$c49 = function(c) { return ['class', c]; },
373
+ peg$c50 = function(a) {
400
374
  return a;
401
375
  },
402
- peg$c43 = function(id, classes) { return [id, classes]; },
403
- peg$c44 = function(classes) { return [null, classes]; },
404
- peg$c45 = function(p) { return p; },
405
- peg$c46 = function(a) { return a; },
406
- peg$c47 = function(h) { return new AST.HashNode(h); },
407
- peg$c48 = "PathIdent",
408
- peg$c49 = "..",
409
- peg$c50 = "\"..\"",
410
- peg$c51 = ".",
411
- peg$c52 = "\".\"",
412
- peg$c53 = /^[a-zA-Z0-9_$\-!?\^@]/,
413
- peg$c54 = "[a-zA-Z0-9_$\\-!?\\^@]",
414
- peg$c55 = function(s) { return s; },
415
- peg$c56 = "[",
416
- peg$c57 = "\"[\"",
417
- peg$c58 = /^[^\]]/,
418
- peg$c59 = "[^\\]]",
419
- peg$c60 = "]",
420
- peg$c61 = "\"]\"",
421
- peg$c62 = function(segmentLiteral) { return segmentLiteral; },
422
- peg$c63 = "Key",
423
- peg$c64 = ":",
424
- peg$c65 = "\":\"",
425
- peg$c66 = function(h) { return [h[0], h[2]]; },
426
- peg$c67 = function(s) { s.isHelper = true; return s; },
427
- peg$c68 = function(s, p) { return { part: p, separator: s }; },
428
- peg$c69 = function(first, tail) {
376
+ peg$c51 = function(id, classes) { return [id, classes]; },
377
+ peg$c52 = function(classes) { return [null, classes]; },
378
+ peg$c53 = function(p) { return p; },
379
+ peg$c54 = function(a) { return a; },
380
+ peg$c55 = function(h) { return new AST.HashNode(h); },
381
+ peg$c56 = "PathIdent",
382
+ peg$c57 = "..",
383
+ peg$c58 = "\"..\"",
384
+ peg$c59 = ".",
385
+ peg$c60 = "\".\"",
386
+ peg$c61 = /^[a-zA-Z0-9_$\-!?\^@]/,
387
+ peg$c62 = "[a-zA-Z0-9_$\\-!?\\^@]",
388
+ peg$c63 = function(s) { return s; },
389
+ peg$c64 = /^[^\]]/,
390
+ peg$c65 = "[^\\]]",
391
+ peg$c66 = function(segmentLiteral) { return segmentLiteral; },
392
+ peg$c67 = "Key",
393
+ peg$c68 = ":",
394
+ peg$c69 = "\":\"",
395
+ peg$c70 = function(h) { return [h[0], h[2]]; },
396
+ peg$c71 = function(h) { return [h[0], h[2]];},
397
+ peg$c72 = function(s) { s.isHelper = true; return s; },
398
+ peg$c73 = function(s, p) { return { part: p, separator: s }; },
399
+ peg$c74 = function(first, tail) {
429
400
  var ret = [{ part: first }];
430
401
  for(var i = 0; i < tail.length; ++i) {
431
402
  ret.push(tail[i]);
432
403
  }
433
404
  return ret;
434
405
  },
435
- peg$c70 = "PathSeparator",
436
- peg$c71 = /^[\/.]/,
437
- peg$c72 = "[\\/.]",
438
- peg$c73 = function(v) {
406
+ peg$c75 = "PathSeparator",
407
+ peg$c76 = /^[\/.]/,
408
+ peg$c77 = "[\\/.]",
409
+ peg$c78 = function(v) {
439
410
  var last = v[v.length - 1];
440
411
 
441
412
  // Support for data keywords that are prefixed with @ in the each
@@ -459,32 +430,32 @@ Emblem.Parser = (function() {
459
430
 
460
431
  return idNode;
461
432
  },
462
- peg$c74 = function(v) { return new AST.StringNode(v); },
463
- peg$c75 = function(v) { return new AST.IntegerNode(v); },
464
- peg$c76 = function(v) { return new AST.BooleanNode(v); },
465
- peg$c77 = "Boolean",
466
- peg$c78 = "true",
467
- peg$c79 = "\"true\"",
468
- peg$c80 = "false",
469
- peg$c81 = "\"false\"",
470
- peg$c82 = "Integer",
471
- peg$c83 = "-",
472
- peg$c84 = "\"-\"",
473
- peg$c85 = /^[0-9]/,
474
- peg$c86 = "[0-9]",
475
- peg$c87 = function(s) { return parseInt(s); },
476
- peg$c88 = "\"",
477
- peg$c89 = "\"\\\"\"",
478
- peg$c90 = "'",
479
- peg$c91 = "\"'\"",
480
- peg$c92 = function(p) { return p[1]; },
481
- peg$c93 = /^[^"}]/,
482
- peg$c94 = "[^\"}]",
483
- peg$c95 = /^[^'}]/,
484
- peg$c96 = "[^'}]",
485
- peg$c97 = /^[A-Za-z]/,
486
- peg$c98 = "[A-Za-z]",
487
- peg$c99 = function(ind, nodes, w) {
433
+ peg$c79 = function(v) { return new AST.StringNode(v); },
434
+ peg$c80 = function(v) { return new AST.IntegerNode(v); },
435
+ peg$c81 = function(v) { return new AST.BooleanNode(v); },
436
+ peg$c82 = "Boolean",
437
+ peg$c83 = "true",
438
+ peg$c84 = "\"true\"",
439
+ peg$c85 = "false",
440
+ peg$c86 = "\"false\"",
441
+ peg$c87 = "Integer",
442
+ peg$c88 = "-",
443
+ peg$c89 = "\"-\"",
444
+ peg$c90 = /^[0-9]/,
445
+ peg$c91 = "[0-9]",
446
+ peg$c92 = function(s) { return parseInt(s); },
447
+ peg$c93 = "\"",
448
+ peg$c94 = "\"\\\"\"",
449
+ peg$c95 = "'",
450
+ peg$c96 = "\"'\"",
451
+ peg$c97 = function(p) { return p[1]; },
452
+ peg$c98 = /^[^"}]/,
453
+ peg$c99 = "[^\"}]",
454
+ peg$c100 = /^[^'}]/,
455
+ peg$c101 = "[^'}]",
456
+ peg$c102 = /^[A-Za-z]/,
457
+ peg$c103 = "[A-Za-z]",
458
+ peg$c104 = function(ind, nodes, w) {
488
459
  nodes.unshift(new AST.ContentNode(ind));
489
460
 
490
461
  for(var i = 0; i < w.length; ++i) {
@@ -494,12 +465,12 @@ Emblem.Parser = (function() {
494
465
  }
495
466
  return nodes;
496
467
  },
497
- peg$c100 = /^[|`']/,
498
- peg$c101 = "[|`']",
499
- peg$c102 = "<",
500
- peg$c103 = "\"<\"",
501
- peg$c104 = function() { return '<'; },
502
- peg$c105 = function(s, nodes, indentedNodes) {
468
+ peg$c105 = /^[|`']/,
469
+ peg$c106 = "[|`']",
470
+ peg$c107 = "<",
471
+ peg$c108 = "\"<\"",
472
+ peg$c109 = function() { return '<'; },
473
+ peg$c110 = function(s, nodes, indentedNodes) {
503
474
  if(nodes.length || !indentedNodes) {
504
475
  nodes.push("\n");
505
476
  }
@@ -529,154 +500,63 @@ Emblem.Parser = (function() {
529
500
  if(s === "'") {
530
501
  ret.push(new AST.ContentNode(" "));
531
502
  }
532
-
533
503
  return ret;
534
504
  },
535
- peg$c106 = function(first, tail) {
505
+ peg$c111 = function(first, tail) {
536
506
  return textNodesResult(first, tail);
537
507
  },
538
- peg$c107 = function(first, tail) { return textNodesResult(first, tail); },
539
- peg$c108 = "{",
540
- peg$c109 = "\"{\"",
541
- peg$c110 = /^[^}]/,
542
- peg$c111 = "[^}]",
543
- peg$c112 = function(text) {
508
+ peg$c112 = function(first, tail) { return textNodesResult(first, tail); },
509
+ peg$c113 = "{",
510
+ peg$c114 = "\"{\"",
511
+ peg$c115 = /^[^}]/,
512
+ peg$c116 = "[^}]",
513
+ peg$c117 = function(text) {
544
514
  // Force interpretation as mustache.
545
515
  // TODO: change to just parse with a specific rule?
546
516
  text = "=" + text;
547
517
  return Emblem.parse(text).statements[0];
548
518
  },
549
- peg$c113 = function(m) { m.escaped = true; return m; },
550
- peg$c114 = function(m) { m.escaped = false; return m; },
551
- peg$c115 = function(a) { return new AST.ContentNode(a); },
552
- peg$c116 = "any character",
553
- peg$c117 = "SingleMustacheOpen",
554
- peg$c118 = "DoubleMustacheOpen",
555
- peg$c119 = "{{",
556
- peg$c120 = "\"{{\"",
557
- peg$c121 = "TripleMustacheOpen",
558
- peg$c122 = "{{{",
559
- peg$c123 = "\"{{{\"",
560
- peg$c124 = "SingleMustacheClose",
561
- peg$c125 = "}",
562
- peg$c126 = "\"}\"",
563
- peg$c127 = "DoubleMustacheClose",
564
- peg$c128 = "}}",
565
- peg$c129 = "\"}}\"",
566
- peg$c130 = "TripleMustacheClose",
567
- peg$c131 = "}}}",
568
- peg$c132 = "\"}}}\"",
569
- peg$c133 = "SubexpressionOpen",
570
- peg$c134 = "(",
571
- peg$c135 = "\"(\"",
572
- peg$c136 = "SubexpressionClose",
573
- peg$c137 = ")",
574
- peg$c138 = "\")\"",
575
- peg$c139 = "InterpolationOpen",
576
- peg$c140 = "#{",
577
- peg$c141 = "\"#{\"",
578
- peg$c142 = "InterpolationClose",
579
- peg$c143 = "==",
580
- peg$c144 = "\"==\"",
581
- peg$c145 = function() { return false; },
582
- peg$c146 = function() { return true; },
583
- peg$c147 = function(h, s) { return h || s; },
584
- peg$c148 = function(h, inTagMustaches, fullAttributes) {
585
- var tagName = h[0] || 'div',
586
- shorthandAttributes = h[1] || [],
587
- id = shorthandAttributes[0],
588
- classes = shorthandAttributes[1] || [],
589
- tagOpenContent = [],
590
- updateMustacheNode;
591
-
592
- updateMustacheNode = function (node) {
593
- var pairs, pair, stringNode, original;
594
- if (!classes.length) {
595
- return;
596
- }
597
- if (!node.id || node.id.string !== 'bind-attr') {
598
- return;
599
- }
600
- if (node.hash && node.hash.pairs && (pairs = node.hash.pairs)) {
601
- for (var i2 in pairs) {
602
- if (!pairs.hasOwnProperty(i2)) { continue; }
603
- pair = pairs[i2];
604
- if (pair && pair[0] === 'class' && pair[1] instanceof AST.StringNode) {
605
- stringNode = pair[1];
606
- original = stringNode.original;
607
- stringNode.original = stringNode.string = stringNode.stringModeValue = ':' + classes.join(' :') + ' ' + original;
608
- classes = [];
609
- }
610
- }
611
- }
612
- };
613
-
614
- tagOpenContent.push(new AST.ContentNode('<' + tagName));
615
-
616
- if(id) {
617
- tagOpenContent.push(new AST.ContentNode(' id="' + id + '"'));
618
- }
619
-
620
- // Pad in tag mustaches with spaces.
621
- for(var i = 0; i < inTagMustaches.length; ++i) {
622
- // Check if given mustache node has class bindings and prepend shorthand classes
623
- updateMustacheNode(inTagMustaches[i]);
624
- tagOpenContent.push(new AST.ContentNode(' '));
625
- tagOpenContent.push(inTagMustaches[i]);
626
- }
627
-
628
- for(var i = 0; i < fullAttributes.length; ++i) {
629
- for (var i2 in fullAttributes[i]) {
630
- if (fullAttributes[i][i2] instanceof AST.MustacheNode) {
631
- updateMustacheNode(fullAttributes[i][i2]);
632
- }
633
- }
634
-
635
- if (classes.length) {
636
- var isClassAttr = fullAttributes[i][1] && fullAttributes[i][1].string === 'class="';
637
-
638
- // Check if attribute is class attribute and has content
639
- if (isClassAttr && fullAttributes[i].length === 4) {
640
- if (fullAttributes[i][2].type == 'mustache') {
641
- var mustacheNode, classesContent, hash, params;
642
- // If class was mustache binding, transform attribute into bind-attr MustacheNode
643
- // In case of 'div.shorthand class=varBinding' will transform into '<div {{bind-attr class=":shorthand varBinding"}}'
644
- mustacheNode = fullAttributes[i][2];
645
- classesContent = ':' + classes.join(' :') + ' ' + mustacheNode.id.original;
646
- hash = new AST.HashNode([
647
- ['class', new AST.StringNode(classesContent)]
648
- ]);
649
-
650
- params = [new AST.IdNode([{ part: 'bind-attr'}])].concat(mustacheNode.params);
651
- fullAttributes[i] = [fullAttributes[i][0], createMustacheNode(params, hash, true)];
652
- } else {
653
- // Else prepend shorthand classes to attribute
654
- classes.push(fullAttributes[i][2].string);
655
- fullAttributes[i][2].string = classes.join(' ');
656
- }
657
- classes = [];
658
- }
659
- }
660
-
661
- tagOpenContent = tagOpenContent.concat(fullAttributes[i]);
662
- }
663
-
664
- if(classes && classes.length) {
665
- tagOpenContent.push(new AST.ContentNode(' class="' + classes.join(' ') + '"'));
666
- }
667
-
668
- var closingTagSlashPresent = !!h[2];
669
- if(SELF_CLOSING_TAG[tagName] || closingTagSlashPresent) {
670
- tagOpenContent.push(new AST.ContentNode(' />'));
671
- return [tagOpenContent];
672
- } else {
673
- tagOpenContent.push(new AST.ContentNode('>'));
674
- return [tagOpenContent, new AST.ContentNode('</' + tagName + '>')];
675
- }
519
+ peg$c118 = function(m) { m.escaped = true; return m; },
520
+ peg$c119 = function(m) { m.escaped = false; return m; },
521
+ peg$c120 = function(a) { return new AST.ContentNode(a); },
522
+ peg$c121 = "any character",
523
+ peg$c122 = "SingleMustacheOpen",
524
+ peg$c123 = "DoubleMustacheOpen",
525
+ peg$c124 = "{{",
526
+ peg$c125 = "\"{{\"",
527
+ peg$c126 = "TripleMustacheOpen",
528
+ peg$c127 = "{{{",
529
+ peg$c128 = "\"{{{\"",
530
+ peg$c129 = "SingleMustacheClose",
531
+ peg$c130 = "}",
532
+ peg$c131 = "\"}\"",
533
+ peg$c132 = "DoubleMustacheClose",
534
+ peg$c133 = "}}",
535
+ peg$c134 = "\"}}\"",
536
+ peg$c135 = "TripleMustacheClose",
537
+ peg$c136 = "}}}",
538
+ peg$c137 = "\"}}}\"",
539
+ peg$c138 = "SubexpressionOpen",
540
+ peg$c139 = "(",
541
+ peg$c140 = "\"(\"",
542
+ peg$c141 = "SubexpressionClose",
543
+ peg$c142 = ")",
544
+ peg$c143 = "\")\"",
545
+ peg$c144 = "InterpolationOpen",
546
+ peg$c145 = "#{",
547
+ peg$c146 = "\"#{\"",
548
+ peg$c147 = "InterpolationClose",
549
+ peg$c148 = "==",
550
+ peg$c149 = "\"==\"",
551
+ peg$c150 = function() { return false; },
552
+ peg$c151 = function() { return true; },
553
+ peg$c152 = function(h, s) { return h || s; },
554
+ peg$c153 = function(h, inTagMustaches, fullAttributes) {
555
+ return parseInHtml(h, inTagMustaches, fullAttributes)
676
556
  },
677
- peg$c149 = function(s) { return { shorthand: s, id: true}; },
678
- peg$c150 = function(s) { return { shorthand: s }; },
679
- peg$c151 = function(shorthands) {
557
+ peg$c154 = function(s) { return { shorthand: s, id: true}; },
558
+ peg$c155 = function(s) { return { shorthand: s }; },
559
+ peg$c156 = function(shorthands) {
680
560
  var id, classes = [];
681
561
  for(var i = 0, len = shorthands.length; i < len; ++i) {
682
562
  var shorthand = shorthands[i];
@@ -689,42 +569,42 @@ Emblem.Parser = (function() {
689
569
 
690
570
  return [id, classes];
691
571
  },
692
- peg$c152 = function(a) {
572
+ peg$c157 = function(a) {
693
573
  if (a.length) {
694
574
  return [new AST.ContentNode(' ')].concat(a);
695
575
  } else {
696
576
  return [];
697
577
  }
698
578
  },
699
- peg$c153 = /^[A-Za-z.0-9_\-]/,
700
- peg$c154 = "[A-Za-z.0-9_\\-]",
701
- peg$c155 = function(id) { return createMustacheNode([id], null, true); },
702
- peg$c156 = function(event, mustacheNode) {
579
+ peg$c158 = /^[A-Za-z.0-9_\-]/,
580
+ peg$c159 = "[A-Za-z.0-9_\\-]",
581
+ peg$c160 = function(id) { return createMustacheNode([id], null, true); },
582
+ peg$c161 = function(event, mustacheNode) {
703
583
  // Replace the IdNode with a StringNode to prevent unquoted action deprecation warnings
704
584
  mustacheNode.id = new AST.StringNode(mustacheNode.id.string);
705
585
 
706
586
  // Unshift the action helper and augment the hash
707
587
  return [unshiftParam(mustacheNode, 'action', [['on', new AST.StringNode(event)]])];
708
588
  },
709
- peg$c157 = function(key, boolValue) {
589
+ peg$c162 = function(key, boolValue) {
710
590
  if (boolValue === 'true') {
711
591
  return [ new AST.ContentNode(key) ];
712
592
  } else {
713
593
  return [];
714
594
  }
715
595
  },
716
- peg$c158 = function(value) { return value.replace(/ *$/, ''); },
717
- peg$c159 = "!",
718
- peg$c160 = "\"!\"",
719
- peg$c161 = function(key, value) { return IS_EMBER; },
720
- peg$c162 = function(key, value) {
596
+ peg$c163 = function(value) { return value.replace(/ *$/, ''); },
597
+ peg$c164 = "!",
598
+ peg$c165 = "\"!\"",
599
+ peg$c166 = function(key, value) { return IS_EMBER; },
600
+ peg$c167 = function(key, value) {
721
601
  var hashNode = new AST.HashNode([[key, new AST.StringNode(value)]]);
722
602
  var params = [new AST.IdNode([{part: 'bind-attr'}])];
723
603
  var mustacheNode = createMustacheNode(params, hashNode);
724
604
 
725
605
  return [mustacheNode];
726
606
  },
727
- peg$c163 = function(key, id) {
607
+ peg$c168 = function(key, id) {
728
608
  var mustacheNode = createMustacheNode([id], null, true);
729
609
 
730
610
  if(IS_EMBER && id._emblemSuffixModifier === '!') {
@@ -737,52 +617,52 @@ Emblem.Parser = (function() {
737
617
  new AST.ContentNode('"'),
738
618
  ];
739
619
  },
740
- peg$c164 = function(key, nodes) {
620
+ peg$c169 = function(key, nodes) {
741
621
  var result = [ new AST.ContentNode(key + '=' + '"') ].concat(nodes);
742
622
  return result.concat([new AST.ContentNode('"')]);
743
623
  },
744
- peg$c165 = "_",
745
- peg$c166 = "\"_\"",
746
- peg$c167 = "%",
747
- peg$c168 = "\"%\"",
748
- peg$c169 = "#",
749
- peg$c170 = "\"#\"",
750
- peg$c171 = function(c) { return c;},
751
- peg$c172 = "CSSIdentifier",
752
- peg$c173 = /^[_a-zA-Z0-9\-]/,
753
- peg$c174 = "[_a-zA-Z0-9\\-]",
754
- peg$c175 = /^[_a-zA-Z]/,
755
- peg$c176 = "[_a-zA-Z]",
756
- peg$c177 = /^[\x80-\xFF]/,
757
- peg$c178 = "[\\x80-\\xFF]",
758
- peg$c179 = "KnownHTMLTagName",
759
- peg$c180 = function(t) { return !!KNOWN_TAGS[t]; },
760
- peg$c181 = function(t) { return t; },
761
- peg$c182 = "a JS event",
762
- peg$c183 = function(t) { return !!KNOWN_EVENTS[t]; },
763
- peg$c184 = "INDENT",
764
- peg$c185 = "\uEFEF",
765
- peg$c186 = "\"\\uEFEF\"",
766
- peg$c187 = function() { return ''; },
767
- peg$c188 = "DEDENT",
768
- peg$c189 = "\uEFFE",
769
- peg$c190 = "\"\\uEFFE\"",
770
- peg$c191 = "Unmatched DEDENT",
771
- peg$c192 = "\uEFEE",
772
- peg$c193 = "\"\\uEFEE\"",
773
- peg$c194 = "LineEnd",
774
- peg$c195 = "\r",
775
- peg$c196 = "\"\\r\"",
776
- peg$c197 = "\uEFFF",
777
- peg$c198 = "\"\\uEFFF\"",
778
- peg$c199 = "\n",
779
- peg$c200 = "\"\\n\"",
780
- peg$c201 = "ANYDEDENT",
781
- peg$c202 = "RequiredWhitespace",
782
- peg$c203 = "OptionalWhitespace",
783
- peg$c204 = "InlineWhitespace",
784
- peg$c205 = /^[ \t]/,
785
- peg$c206 = "[ \\t]",
624
+ peg$c170 = "_",
625
+ peg$c171 = "\"_\"",
626
+ peg$c172 = "%",
627
+ peg$c173 = "\"%\"",
628
+ peg$c174 = "#",
629
+ peg$c175 = "\"#\"",
630
+ peg$c176 = function(c) { return c;},
631
+ peg$c177 = "CSSIdentifier",
632
+ peg$c178 = /^[_a-zA-Z0-9\-]/,
633
+ peg$c179 = "[_a-zA-Z0-9\\-]",
634
+ peg$c180 = /^[_a-zA-Z]/,
635
+ peg$c181 = "[_a-zA-Z]",
636
+ peg$c182 = /^[\x80-\xFF]/,
637
+ peg$c183 = "[\\x80-\\xFF]",
638
+ peg$c184 = "KnownHTMLTagName",
639
+ peg$c185 = function(t) { return !!KNOWN_TAGS[t]; },
640
+ peg$c186 = function(t) { return t; },
641
+ peg$c187 = "a JS event",
642
+ peg$c188 = function(t) { return !!KNOWN_EVENTS[t]; },
643
+ peg$c189 = "INDENT",
644
+ peg$c190 = "\uEFEF",
645
+ peg$c191 = "\"\\uEFEF\"",
646
+ peg$c192 = function() { return ''; },
647
+ peg$c193 = "DEDENT",
648
+ peg$c194 = "\uEFFE",
649
+ peg$c195 = "\"\\uEFFE\"",
650
+ peg$c196 = "Unmatched DEDENT",
651
+ peg$c197 = "\uEFEE",
652
+ peg$c198 = "\"\\uEFEE\"",
653
+ peg$c199 = "LineEnd",
654
+ peg$c200 = "\r",
655
+ peg$c201 = "\"\\r\"",
656
+ peg$c202 = "\uEFFF",
657
+ peg$c203 = "\"\\uEFFF\"",
658
+ peg$c204 = "\n",
659
+ peg$c205 = "\"\\n\"",
660
+ peg$c206 = "ANYDEDENT",
661
+ peg$c207 = "RequiredWhitespace",
662
+ peg$c208 = "OptionalWhitespace",
663
+ peg$c209 = "InlineWhitespace",
664
+ peg$c210 = /^[ \t]/,
665
+ peg$c211 = "[ \\t]",
786
666
 
787
667
  peg$currPos = 0,
788
668
  peg$reportedPos = 0,
@@ -1565,8 +1445,47 @@ Emblem.Parser = (function() {
1565
1445
  return s0;
1566
1446
  }
1567
1447
 
1448
+ function peg$parseunindentedContent() {
1449
+ var s0, s1, s2, s3;
1450
+
1451
+ s0 = peg$currPos;
1452
+ s1 = [];
1453
+ s2 = peg$parseblankLine();
1454
+ while (s2 !== null) {
1455
+ s1.push(s2);
1456
+ s2 = peg$parseblankLine();
1457
+ }
1458
+ if (s1 !== null) {
1459
+ s2 = peg$parsecontent();
1460
+ if (s2 !== null) {
1461
+ s3 = peg$parseDEDENT();
1462
+ if (s3 !== null) {
1463
+ peg$reportedPos = s0;
1464
+ s1 = peg$c28(s2);
1465
+ if (s1 === null) {
1466
+ peg$currPos = s0;
1467
+ s0 = s1;
1468
+ } else {
1469
+ s0 = s1;
1470
+ }
1471
+ } else {
1472
+ peg$currPos = s0;
1473
+ s0 = peg$c0;
1474
+ }
1475
+ } else {
1476
+ peg$currPos = s0;
1477
+ s0 = peg$c0;
1478
+ }
1479
+ } else {
1480
+ peg$currPos = s0;
1481
+ s0 = peg$c0;
1482
+ }
1483
+
1484
+ return s0;
1485
+ }
1486
+
1568
1487
  function peg$parsehtmlTerminator() {
1569
- var s0, s1, s2, s3, s4;
1488
+ var s0, s1, s2, s3, s4, s5;
1570
1489
 
1571
1490
  s0 = peg$parsecolonContent();
1572
1491
  if (s0 === null) {
@@ -1632,7 +1551,71 @@ Emblem.Parser = (function() {
1632
1551
  s0 = peg$c0;
1633
1552
  }
1634
1553
  if (s0 === null) {
1635
- s0 = peg$parsehtmlNestedTextNodes();
1554
+ s0 = peg$currPos;
1555
+ s1 = peg$parse_();
1556
+ if (s1 !== null) {
1557
+ s2 = peg$parseinlineComment();
1558
+ if (s2 === null) {
1559
+ s2 = peg$c1;
1560
+ }
1561
+ if (s2 !== null) {
1562
+ if (input.charCodeAt(peg$currPos) === 93) {
1563
+ s3 = peg$c30;
1564
+ peg$currPos++;
1565
+ } else {
1566
+ s3 = null;
1567
+ if (peg$silentFails === 0) { peg$fail(peg$c31); }
1568
+ }
1569
+ if (s3 !== null) {
1570
+ s4 = peg$parseTERM();
1571
+ if (s4 !== null) {
1572
+ s5 = peg$parseunindentedContent();
1573
+ if (s5 === null) {
1574
+ s5 = peg$c1;
1575
+ }
1576
+ if (s5 !== null) {
1577
+ peg$reportedPos = s0;
1578
+ s1 = peg$c28(s5);
1579
+ if (s1 === null) {
1580
+ peg$currPos = s0;
1581
+ s0 = s1;
1582
+ } else {
1583
+ s0 = s1;
1584
+ }
1585
+ } else {
1586
+ peg$currPos = s0;
1587
+ s0 = peg$c0;
1588
+ }
1589
+ } else {
1590
+ peg$currPos = s0;
1591
+ s0 = peg$c0;
1592
+ }
1593
+ } else {
1594
+ peg$currPos = s0;
1595
+ s0 = peg$c0;
1596
+ }
1597
+ } else {
1598
+ peg$currPos = s0;
1599
+ s0 = peg$c0;
1600
+ }
1601
+ } else {
1602
+ peg$currPos = s0;
1603
+ s0 = peg$c0;
1604
+ }
1605
+ if (s0 === null) {
1606
+ s0 = peg$currPos;
1607
+ s1 = peg$parsehtmlNestedTextNodes();
1608
+ if (s1 !== null) {
1609
+ peg$reportedPos = s0;
1610
+ s1 = peg$c32(s1);
1611
+ }
1612
+ if (s1 === null) {
1613
+ peg$currPos = s0;
1614
+ s0 = s1;
1615
+ } else {
1616
+ s0 = s1;
1617
+ }
1618
+ }
1636
1619
  }
1637
1620
  }
1638
1621
  }
@@ -1649,7 +1632,7 @@ Emblem.Parser = (function() {
1649
1632
  s2 = peg$parsehtmlTerminator();
1650
1633
  if (s2 !== null) {
1651
1634
  peg$reportedPos = s0;
1652
- s1 = peg$c30(s1, s2);
1635
+ s1 = peg$c33(s1, s2);
1653
1636
  if (s1 === null) {
1654
1637
  peg$currPos = s0;
1655
1638
  s0 = s1;
@@ -1684,7 +1667,7 @@ Emblem.Parser = (function() {
1684
1667
  s4 = peg$parsemustacheNestedContent();
1685
1668
  if (s4 !== null) {
1686
1669
  peg$reportedPos = s0;
1687
- s1 = peg$c31(s1, s4);
1670
+ s1 = peg$c34(s1, s4);
1688
1671
  if (s1 === null) {
1689
1672
  peg$currPos = s0;
1690
1673
  s0 = s1;
@@ -1801,12 +1784,12 @@ Emblem.Parser = (function() {
1801
1784
  var s0, s1, s2, s3;
1802
1785
 
1803
1786
  s0 = peg$currPos;
1804
- if (input.substr(peg$currPos, 2) === peg$c32) {
1805
- s1 = peg$c32;
1787
+ if (input.substr(peg$currPos, 2) === peg$c35) {
1788
+ s1 = peg$c35;
1806
1789
  peg$currPos += 2;
1807
1790
  } else {
1808
1791
  s1 = null;
1809
- if (peg$silentFails === 0) { peg$fail(peg$c33); }
1792
+ if (peg$silentFails === 0) { peg$fail(peg$c36); }
1810
1793
  }
1811
1794
  if (s1 !== null) {
1812
1795
  s2 = peg$parse_();
@@ -1847,7 +1830,7 @@ Emblem.Parser = (function() {
1847
1830
  }
1848
1831
  if (s1 !== null) {
1849
1832
  peg$reportedPos = s0;
1850
- s1 = peg$c34(s1);
1833
+ s1 = peg$c37(s1);
1851
1834
  }
1852
1835
  if (s1 === null) {
1853
1836
  peg$currPos = s0;
@@ -1857,24 +1840,77 @@ Emblem.Parser = (function() {
1857
1840
  }
1858
1841
  if (s0 === null) {
1859
1842
  s0 = peg$currPos;
1860
- s1 = peg$parseTERM();
1843
+ s1 = peg$parse_();
1861
1844
  if (s1 !== null) {
1862
- s2 = peg$currPos;
1863
- s3 = [];
1864
- s4 = peg$parseblankLine();
1865
- while (s4 !== null) {
1866
- s3.push(s4);
1867
- s4 = peg$parseblankLine();
1845
+ if (input.charCodeAt(peg$currPos) === 93) {
1846
+ s2 = peg$c30;
1847
+ peg$currPos++;
1848
+ } else {
1849
+ s2 = null;
1850
+ if (peg$silentFails === 0) { peg$fail(peg$c31); }
1868
1851
  }
1869
- if (s3 !== null) {
1870
- s4 = peg$parseindentation();
1871
- if (s4 !== null) {
1872
- s5 = peg$parseinvertibleContent();
1873
- if (s5 !== null) {
1874
- s6 = peg$parseDEDENT();
1875
- if (s6 !== null) {
1876
- s3 = [s3, s4, s5, s6];
1877
- s2 = s3;
1852
+ if (s2 !== null) {
1853
+ s3 = peg$parseTERM();
1854
+ if (s3 !== null) {
1855
+ s4 = peg$parsecolonContent();
1856
+ if (s4 === null) {
1857
+ s4 = peg$parsetextLine();
1858
+ }
1859
+ if (s4 !== null) {
1860
+ s5 = peg$parseDEDENT();
1861
+ if (s5 !== null) {
1862
+ peg$reportedPos = s0;
1863
+ s1 = peg$c37(s4);
1864
+ if (s1 === null) {
1865
+ peg$currPos = s0;
1866
+ s0 = s1;
1867
+ } else {
1868
+ s0 = s1;
1869
+ }
1870
+ } else {
1871
+ peg$currPos = s0;
1872
+ s0 = peg$c0;
1873
+ }
1874
+ } else {
1875
+ peg$currPos = s0;
1876
+ s0 = peg$c0;
1877
+ }
1878
+ } else {
1879
+ peg$currPos = s0;
1880
+ s0 = peg$c0;
1881
+ }
1882
+ } else {
1883
+ peg$currPos = s0;
1884
+ s0 = peg$c0;
1885
+ }
1886
+ } else {
1887
+ peg$currPos = s0;
1888
+ s0 = peg$c0;
1889
+ }
1890
+ if (s0 === null) {
1891
+ s0 = peg$currPos;
1892
+ s1 = peg$parseTERM();
1893
+ if (s1 !== null) {
1894
+ s2 = peg$currPos;
1895
+ s3 = [];
1896
+ s4 = peg$parseblankLine();
1897
+ while (s4 !== null) {
1898
+ s3.push(s4);
1899
+ s4 = peg$parseblankLine();
1900
+ }
1901
+ if (s3 !== null) {
1902
+ s4 = peg$parseindentation();
1903
+ if (s4 !== null) {
1904
+ s5 = peg$parseinvertibleContent();
1905
+ if (s5 !== null) {
1906
+ s6 = peg$parseDEDENT();
1907
+ if (s6 !== null) {
1908
+ s3 = [s3, s4, s5, s6];
1909
+ s2 = s3;
1910
+ } else {
1911
+ peg$currPos = s2;
1912
+ s2 = peg$c0;
1913
+ }
1878
1914
  } else {
1879
1915
  peg$currPos = s2;
1880
1916
  s2 = peg$c0;
@@ -1887,29 +1923,73 @@ Emblem.Parser = (function() {
1887
1923
  peg$currPos = s2;
1888
1924
  s2 = peg$c0;
1889
1925
  }
1890
- } else {
1891
- peg$currPos = s2;
1892
- s2 = peg$c0;
1893
- }
1894
- if (s2 === null) {
1895
- s2 = peg$c1;
1896
- }
1897
- if (s2 !== null) {
1898
- peg$reportedPos = s0;
1899
- s1 = peg$c35(s2);
1900
- if (s1 === null) {
1901
- peg$currPos = s0;
1902
- s0 = s1;
1926
+ if (s2 === null) {
1927
+ s2 = peg$c1;
1928
+ }
1929
+ if (s2 !== null) {
1930
+ peg$reportedPos = s0;
1931
+ s1 = peg$c38(s2);
1932
+ if (s1 === null) {
1933
+ peg$currPos = s0;
1934
+ s0 = s1;
1935
+ } else {
1936
+ s0 = s1;
1937
+ }
1903
1938
  } else {
1904
- s0 = s1;
1939
+ peg$currPos = s0;
1940
+ s0 = peg$c0;
1905
1941
  }
1906
1942
  } else {
1907
1943
  peg$currPos = s0;
1908
1944
  s0 = peg$c0;
1909
1945
  }
1910
- } else {
1911
- peg$currPos = s0;
1912
- s0 = peg$c0;
1946
+ if (s0 === null) {
1947
+ s0 = peg$currPos;
1948
+ s1 = peg$parse_();
1949
+ if (s1 !== null) {
1950
+ if (input.charCodeAt(peg$currPos) === 93) {
1951
+ s2 = peg$c30;
1952
+ peg$currPos++;
1953
+ } else {
1954
+ s2 = null;
1955
+ if (peg$silentFails === 0) { peg$fail(peg$c31); }
1956
+ }
1957
+ if (s2 !== null) {
1958
+ s3 = peg$parseTERM();
1959
+ if (s3 !== null) {
1960
+ s4 = peg$parseinvertibleContent();
1961
+ if (s4 !== null) {
1962
+ s5 = peg$parseDEDENT();
1963
+ if (s5 !== null) {
1964
+ peg$reportedPos = s0;
1965
+ s1 = peg$c39(s4);
1966
+ if (s1 === null) {
1967
+ peg$currPos = s0;
1968
+ s0 = s1;
1969
+ } else {
1970
+ s0 = s1;
1971
+ }
1972
+ } else {
1973
+ peg$currPos = s0;
1974
+ s0 = peg$c0;
1975
+ }
1976
+ } else {
1977
+ peg$currPos = s0;
1978
+ s0 = peg$c0;
1979
+ }
1980
+ } else {
1981
+ peg$currPos = s0;
1982
+ s0 = peg$c0;
1983
+ }
1984
+ } else {
1985
+ peg$currPos = s0;
1986
+ s0 = peg$c0;
1987
+ }
1988
+ } else {
1989
+ peg$currPos = s0;
1990
+ s0 = peg$c0;
1991
+ }
1992
+ }
1913
1993
  }
1914
1994
  }
1915
1995
 
@@ -1925,7 +2005,7 @@ Emblem.Parser = (function() {
1925
2005
  s2 = peg$parsemustacheOrBlock();
1926
2006
  if (s2 !== null) {
1927
2007
  peg$reportedPos = s0;
1928
- s1 = peg$c36(s1, s2);
2008
+ s1 = peg$c40(s1, s2);
1929
2009
  if (s1 === null) {
1930
2010
  peg$currPos = s0;
1931
2011
  s0 = s1;
@@ -1945,7 +2025,7 @@ Emblem.Parser = (function() {
1945
2025
  }
1946
2026
 
1947
2027
  function peg$parseinMustache() {
1948
- var s0, s1, s2, s3;
2028
+ var s0, s1, s2, s3, s4, s5;
1949
2029
 
1950
2030
  s0 = peg$currPos;
1951
2031
  if (input.charCodeAt(peg$currPos) === 62) {
@@ -1959,17 +2039,52 @@ Emblem.Parser = (function() {
1959
2039
  s1 = peg$c1;
1960
2040
  }
1961
2041
  if (s1 !== null) {
1962
- s2 = peg$parse_();
2042
+ s2 = peg$currPos;
2043
+ peg$silentFails++;
2044
+ s3 = peg$currPos;
2045
+ if (input.charCodeAt(peg$currPos) === 91) {
2046
+ s4 = peg$c41;
2047
+ peg$currPos++;
2048
+ } else {
2049
+ s4 = null;
2050
+ if (peg$silentFails === 0) { peg$fail(peg$c42); }
2051
+ }
2052
+ if (s4 !== null) {
2053
+ s5 = peg$parseTERM();
2054
+ if (s5 !== null) {
2055
+ s4 = [s4, s5];
2056
+ s3 = s4;
2057
+ } else {
2058
+ peg$currPos = s3;
2059
+ s3 = peg$c0;
2060
+ }
2061
+ } else {
2062
+ peg$currPos = s3;
2063
+ s3 = peg$c0;
2064
+ }
2065
+ peg$silentFails--;
2066
+ if (s3 === null) {
2067
+ s2 = peg$c1;
2068
+ } else {
2069
+ peg$currPos = s2;
2070
+ s2 = peg$c0;
2071
+ }
1963
2072
  if (s2 !== null) {
1964
- s3 = peg$parsesexpr();
2073
+ s3 = peg$parse_();
1965
2074
  if (s3 !== null) {
1966
- peg$reportedPos = s0;
1967
- s1 = peg$c37(s1, s3);
1968
- if (s1 === null) {
1969
- peg$currPos = s0;
1970
- s0 = s1;
2075
+ s4 = peg$parsesexpr();
2076
+ if (s4 !== null) {
2077
+ peg$reportedPos = s0;
2078
+ s1 = peg$c43(s1, s4);
2079
+ if (s1 === null) {
2080
+ peg$currPos = s0;
2081
+ s0 = s1;
2082
+ } else {
2083
+ s0 = s1;
2084
+ }
1971
2085
  } else {
1972
- s0 = s1;
2086
+ peg$currPos = s0;
2087
+ s0 = peg$c0;
1973
2088
  }
1974
2089
  } else {
1975
2090
  peg$currPos = s0;
@@ -1988,30 +2103,51 @@ Emblem.Parser = (function() {
1988
2103
  }
1989
2104
 
1990
2105
  function peg$parsesexpr() {
1991
- var s0, s1, s2, s3;
2106
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
1992
2107
 
1993
2108
  s0 = peg$currPos;
1994
2109
  s1 = peg$parsepathIdNode();
1995
2110
  if (s1 !== null) {
1996
- s2 = [];
1997
- s3 = peg$parseinMustacheParam();
1998
- while (s3 !== null) {
1999
- s2.push(s3);
2000
- s3 = peg$parseinMustacheParam();
2111
+ s2 = peg$currPos;
2112
+ peg$silentFails++;
2113
+ if (input.substr(peg$currPos, 2) === peg$c44) {
2114
+ s3 = peg$c44;
2115
+ peg$currPos += 2;
2116
+ } else {
2117
+ s3 = null;
2118
+ if (peg$silentFails === 0) { peg$fail(peg$c45); }
2119
+ }
2120
+ peg$silentFails--;
2121
+ if (s3 === null) {
2122
+ s2 = peg$c1;
2123
+ } else {
2124
+ peg$currPos = s2;
2125
+ s2 = peg$c0;
2001
2126
  }
2002
2127
  if (s2 !== null) {
2003
- s3 = peg$parsehash();
2004
- if (s3 === null) {
2005
- s3 = peg$c1;
2128
+ s3 = [];
2129
+ s4 = peg$parseinMustacheParam();
2130
+ while (s4 !== null) {
2131
+ s3.push(s4);
2132
+ s4 = peg$parseinMustacheParam();
2006
2133
  }
2007
2134
  if (s3 !== null) {
2008
- peg$reportedPos = s0;
2009
- s1 = peg$c38(s1, s2, s3);
2010
- if (s1 === null) {
2011
- peg$currPos = s0;
2012
- s0 = s1;
2135
+ s4 = peg$parsehash();
2136
+ if (s4 === null) {
2137
+ s4 = peg$c1;
2138
+ }
2139
+ if (s4 !== null) {
2140
+ peg$reportedPos = s0;
2141
+ s1 = peg$c46(s1, s3, s4);
2142
+ if (s1 === null) {
2143
+ peg$currPos = s0;
2144
+ s0 = s1;
2145
+ } else {
2146
+ s0 = s1;
2147
+ }
2013
2148
  } else {
2014
- s0 = s1;
2149
+ peg$currPos = s0;
2150
+ s0 = peg$c0;
2015
2151
  }
2016
2152
  } else {
2017
2153
  peg$currPos = s0;
@@ -2025,6 +2161,95 @@ Emblem.Parser = (function() {
2025
2161
  peg$currPos = s0;
2026
2162
  s0 = peg$c0;
2027
2163
  }
2164
+ if (s0 === null) {
2165
+ s0 = peg$currPos;
2166
+ s1 = peg$parsepathIdNode();
2167
+ if (s1 !== null) {
2168
+ s2 = peg$parse_();
2169
+ if (s2 !== null) {
2170
+ if (input.charCodeAt(peg$currPos) === 91) {
2171
+ s3 = peg$c41;
2172
+ peg$currPos++;
2173
+ } else {
2174
+ s3 = null;
2175
+ if (peg$silentFails === 0) { peg$fail(peg$c42); }
2176
+ }
2177
+ if (s3 !== null) {
2178
+ s4 = peg$parse_();
2179
+ if (s4 !== null) {
2180
+ s5 = [];
2181
+ s6 = peg$parseTERM();
2182
+ while (s6 !== null) {
2183
+ s5.push(s6);
2184
+ s6 = peg$parseTERM();
2185
+ }
2186
+ if (s5 !== null) {
2187
+ s6 = [];
2188
+ s7 = peg$parseINDENT();
2189
+ while (s7 !== null) {
2190
+ s6.push(s7);
2191
+ s7 = peg$parseINDENT();
2192
+ }
2193
+ if (s6 !== null) {
2194
+ s7 = peg$parse_();
2195
+ if (s7 !== null) {
2196
+ s8 = [];
2197
+ s9 = peg$parseinMustacheBracketedParam();
2198
+ while (s9 !== null) {
2199
+ s8.push(s9);
2200
+ s9 = peg$parseinMustacheBracketedParam();
2201
+ }
2202
+ if (s8 !== null) {
2203
+ s9 = peg$parsebracketedHash();
2204
+ if (s9 === null) {
2205
+ s9 = peg$c1;
2206
+ }
2207
+ if (s9 !== null) {
2208
+ peg$reportedPos = s0;
2209
+ s1 = peg$c46(s1, s8, s9);
2210
+ if (s1 === null) {
2211
+ peg$currPos = s0;
2212
+ s0 = s1;
2213
+ } else {
2214
+ s0 = s1;
2215
+ }
2216
+ } else {
2217
+ peg$currPos = s0;
2218
+ s0 = peg$c0;
2219
+ }
2220
+ } else {
2221
+ peg$currPos = s0;
2222
+ s0 = peg$c0;
2223
+ }
2224
+ } else {
2225
+ peg$currPos = s0;
2226
+ s0 = peg$c0;
2227
+ }
2228
+ } else {
2229
+ peg$currPos = s0;
2230
+ s0 = peg$c0;
2231
+ }
2232
+ } else {
2233
+ peg$currPos = s0;
2234
+ s0 = peg$c0;
2235
+ }
2236
+ } else {
2237
+ peg$currPos = s0;
2238
+ s0 = peg$c0;
2239
+ }
2240
+ } else {
2241
+ peg$currPos = s0;
2242
+ s0 = peg$c0;
2243
+ }
2244
+ } else {
2245
+ peg$currPos = s0;
2246
+ s0 = peg$c0;
2247
+ }
2248
+ } else {
2249
+ peg$currPos = s0;
2250
+ s0 = peg$c0;
2251
+ }
2252
+ }
2028
2253
 
2029
2254
  return s0;
2030
2255
  }
@@ -2039,7 +2264,7 @@ Emblem.Parser = (function() {
2039
2264
  s3 = peg$parsetagNameShorthand();
2040
2265
  if (s3 !== null) {
2041
2266
  peg$reportedPos = s2;
2042
- s3 = peg$c39(s3);
2267
+ s3 = peg$c47(s3);
2043
2268
  }
2044
2269
  if (s3 === null) {
2045
2270
  peg$currPos = s2;
@@ -2052,7 +2277,7 @@ Emblem.Parser = (function() {
2052
2277
  s3 = peg$parseidShorthand();
2053
2278
  if (s3 !== null) {
2054
2279
  peg$reportedPos = s2;
2055
- s3 = peg$c40(s3);
2280
+ s3 = peg$c48(s3);
2056
2281
  }
2057
2282
  if (s3 === null) {
2058
2283
  peg$currPos = s2;
@@ -2065,7 +2290,7 @@ Emblem.Parser = (function() {
2065
2290
  s3 = peg$parseclassShorthand();
2066
2291
  if (s3 !== null) {
2067
2292
  peg$reportedPos = s2;
2068
- s3 = peg$c41(s3);
2293
+ s3 = peg$c49(s3);
2069
2294
  }
2070
2295
  if (s3 === null) {
2071
2296
  peg$currPos = s2;
@@ -2077,7 +2302,7 @@ Emblem.Parser = (function() {
2077
2302
  }
2078
2303
  if (s2 !== null) {
2079
2304
  peg$reportedPos = s0;
2080
- s1 = peg$c42(s2);
2305
+ s1 = peg$c50(s2);
2081
2306
  if (s1 === null) {
2082
2307
  peg$currPos = s0;
2083
2308
  s0 = s1;
@@ -2121,7 +2346,7 @@ Emblem.Parser = (function() {
2121
2346
  }
2122
2347
  if (s2 !== null) {
2123
2348
  peg$reportedPos = s0;
2124
- s1 = peg$c43(s1, s2);
2349
+ s1 = peg$c51(s1, s2);
2125
2350
  if (s1 === null) {
2126
2351
  peg$currPos = s0;
2127
2352
  s0 = s1;
@@ -2156,7 +2381,7 @@ Emblem.Parser = (function() {
2156
2381
  }
2157
2382
  if (s1 !== null) {
2158
2383
  peg$reportedPos = s0;
2159
- s1 = peg$c44(s1);
2384
+ s1 = peg$c52(s1);
2160
2385
  }
2161
2386
  if (s1 === null) {
2162
2387
  peg$currPos = s0;
@@ -2180,7 +2405,54 @@ Emblem.Parser = (function() {
2180
2405
  s3 = peg$parseparam();
2181
2406
  if (s3 !== null) {
2182
2407
  peg$reportedPos = s1;
2183
- s2 = peg$c45(s3);
2408
+ s2 = peg$c53(s3);
2409
+ if (s2 === null) {
2410
+ peg$currPos = s1;
2411
+ s1 = s2;
2412
+ } else {
2413
+ s1 = s2;
2414
+ }
2415
+ } else {
2416
+ peg$currPos = s1;
2417
+ s1 = peg$c0;
2418
+ }
2419
+ } else {
2420
+ peg$currPos = s1;
2421
+ s1 = peg$c0;
2422
+ }
2423
+ }
2424
+ if (s1 !== null) {
2425
+ peg$reportedPos = s0;
2426
+ s1 = peg$c54(s1);
2427
+ }
2428
+ if (s1 === null) {
2429
+ peg$currPos = s0;
2430
+ s0 = s1;
2431
+ } else {
2432
+ s0 = s1;
2433
+ }
2434
+
2435
+ return s0;
2436
+ }
2437
+
2438
+ function peg$parseinMustacheBracketedParam() {
2439
+ var s0, s1, s2, s3, s4;
2440
+
2441
+ s0 = peg$currPos;
2442
+ s1 = peg$parsehtmlMustacheAttribute();
2443
+ if (s1 === null) {
2444
+ s1 = peg$currPos;
2445
+ s2 = peg$parseparam();
2446
+ if (s2 !== null) {
2447
+ s3 = [];
2448
+ s4 = peg$parseTERM();
2449
+ while (s4 !== null) {
2450
+ s3.push(s4);
2451
+ s4 = peg$parseTERM();
2452
+ }
2453
+ if (s3 !== null) {
2454
+ peg$reportedPos = s1;
2455
+ s2 = peg$c53(s2);
2184
2456
  if (s2 === null) {
2185
2457
  peg$currPos = s1;
2186
2458
  s1 = s2;
@@ -2198,7 +2470,7 @@ Emblem.Parser = (function() {
2198
2470
  }
2199
2471
  if (s1 !== null) {
2200
2472
  peg$reportedPos = s0;
2201
- s1 = peg$c46(s1);
2473
+ s1 = peg$c54(s1);
2202
2474
  }
2203
2475
  if (s1 === null) {
2204
2476
  peg$currPos = s0;
@@ -2226,7 +2498,7 @@ Emblem.Parser = (function() {
2226
2498
  }
2227
2499
  if (s1 !== null) {
2228
2500
  peg$reportedPos = s0;
2229
- s1 = peg$c47(s1);
2501
+ s1 = peg$c55(s1);
2230
2502
  }
2231
2503
  if (s1 === null) {
2232
2504
  peg$currPos = s0;
@@ -2238,45 +2510,110 @@ Emblem.Parser = (function() {
2238
2510
  return s0;
2239
2511
  }
2240
2512
 
2513
+ function peg$parsebracketedHash() {
2514
+ var s0, s1, s2, s3, s4;
2515
+
2516
+ s0 = peg$currPos;
2517
+ s1 = [];
2518
+ s2 = peg$parseINDENT();
2519
+ while (s2 !== null) {
2520
+ s1.push(s2);
2521
+ s2 = peg$parseINDENT();
2522
+ }
2523
+ if (s1 !== null) {
2524
+ s2 = [];
2525
+ if (input.charCodeAt(peg$currPos) === 32) {
2526
+ s3 = peg$c25;
2527
+ peg$currPos++;
2528
+ } else {
2529
+ s3 = null;
2530
+ if (peg$silentFails === 0) { peg$fail(peg$c26); }
2531
+ }
2532
+ while (s3 !== null) {
2533
+ s2.push(s3);
2534
+ if (input.charCodeAt(peg$currPos) === 32) {
2535
+ s3 = peg$c25;
2536
+ peg$currPos++;
2537
+ } else {
2538
+ s3 = null;
2539
+ if (peg$silentFails === 0) { peg$fail(peg$c26); }
2540
+ }
2541
+ }
2542
+ if (s2 !== null) {
2543
+ s3 = [];
2544
+ s4 = peg$parsebracketedHashSegment();
2545
+ if (s4 !== null) {
2546
+ while (s4 !== null) {
2547
+ s3.push(s4);
2548
+ s4 = peg$parsebracketedHashSegment();
2549
+ }
2550
+ } else {
2551
+ s3 = peg$c0;
2552
+ }
2553
+ if (s3 !== null) {
2554
+ peg$reportedPos = s0;
2555
+ s1 = peg$c55(s3);
2556
+ if (s1 === null) {
2557
+ peg$currPos = s0;
2558
+ s0 = s1;
2559
+ } else {
2560
+ s0 = s1;
2561
+ }
2562
+ } else {
2563
+ peg$currPos = s0;
2564
+ s0 = peg$c0;
2565
+ }
2566
+ } else {
2567
+ peg$currPos = s0;
2568
+ s0 = peg$c0;
2569
+ }
2570
+ } else {
2571
+ peg$currPos = s0;
2572
+ s0 = peg$c0;
2573
+ }
2574
+
2575
+ return s0;
2576
+ }
2577
+
2241
2578
  function peg$parsepathIdent() {
2242
2579
  var s0, s1, s2, s3, s4;
2243
2580
 
2244
2581
  peg$silentFails++;
2245
- if (input.substr(peg$currPos, 2) === peg$c49) {
2246
- s0 = peg$c49;
2582
+ if (input.substr(peg$currPos, 2) === peg$c57) {
2583
+ s0 = peg$c57;
2247
2584
  peg$currPos += 2;
2248
2585
  } else {
2249
2586
  s0 = null;
2250
- if (peg$silentFails === 0) { peg$fail(peg$c50); }
2587
+ if (peg$silentFails === 0) { peg$fail(peg$c58); }
2251
2588
  }
2252
2589
  if (s0 === null) {
2253
2590
  if (input.charCodeAt(peg$currPos) === 46) {
2254
- s0 = peg$c51;
2591
+ s0 = peg$c59;
2255
2592
  peg$currPos++;
2256
2593
  } else {
2257
2594
  s0 = null;
2258
- if (peg$silentFails === 0) { peg$fail(peg$c52); }
2595
+ if (peg$silentFails === 0) { peg$fail(peg$c60); }
2259
2596
  }
2260
2597
  if (s0 === null) {
2261
2598
  s0 = peg$currPos;
2262
2599
  s1 = peg$currPos;
2263
2600
  s2 = [];
2264
- if (peg$c53.test(input.charAt(peg$currPos))) {
2601
+ if (peg$c61.test(input.charAt(peg$currPos))) {
2265
2602
  s3 = input.charAt(peg$currPos);
2266
2603
  peg$currPos++;
2267
2604
  } else {
2268
2605
  s3 = null;
2269
- if (peg$silentFails === 0) { peg$fail(peg$c54); }
2606
+ if (peg$silentFails === 0) { peg$fail(peg$c62); }
2270
2607
  }
2271
2608
  if (s3 !== null) {
2272
2609
  while (s3 !== null) {
2273
2610
  s2.push(s3);
2274
- if (peg$c53.test(input.charAt(peg$currPos))) {
2611
+ if (peg$c61.test(input.charAt(peg$currPos))) {
2275
2612
  s3 = input.charAt(peg$currPos);
2276
2613
  peg$currPos++;
2277
2614
  } else {
2278
2615
  s3 = null;
2279
- if (peg$silentFails === 0) { peg$fail(peg$c54); }
2616
+ if (peg$silentFails === 0) { peg$fail(peg$c62); }
2280
2617
  }
2281
2618
  }
2282
2619
  } else {
@@ -2305,7 +2642,7 @@ Emblem.Parser = (function() {
2305
2642
  }
2306
2643
  if (s2 !== null) {
2307
2644
  peg$reportedPos = s0;
2308
- s1 = peg$c55(s1);
2645
+ s1 = peg$c63(s1);
2309
2646
  if (s1 === null) {
2310
2647
  peg$currPos = s0;
2311
2648
  s0 = s1;
@@ -2323,30 +2660,30 @@ Emblem.Parser = (function() {
2323
2660
  if (s0 === null) {
2324
2661
  s0 = peg$currPos;
2325
2662
  if (input.charCodeAt(peg$currPos) === 91) {
2326
- s1 = peg$c56;
2663
+ s1 = peg$c41;
2327
2664
  peg$currPos++;
2328
2665
  } else {
2329
2666
  s1 = null;
2330
- if (peg$silentFails === 0) { peg$fail(peg$c57); }
2667
+ if (peg$silentFails === 0) { peg$fail(peg$c42); }
2331
2668
  }
2332
2669
  if (s1 !== null) {
2333
2670
  s2 = peg$currPos;
2334
2671
  s3 = [];
2335
- if (peg$c58.test(input.charAt(peg$currPos))) {
2672
+ if (peg$c64.test(input.charAt(peg$currPos))) {
2336
2673
  s4 = input.charAt(peg$currPos);
2337
2674
  peg$currPos++;
2338
2675
  } else {
2339
2676
  s4 = null;
2340
- if (peg$silentFails === 0) { peg$fail(peg$c59); }
2677
+ if (peg$silentFails === 0) { peg$fail(peg$c65); }
2341
2678
  }
2342
2679
  while (s4 !== null) {
2343
2680
  s3.push(s4);
2344
- if (peg$c58.test(input.charAt(peg$currPos))) {
2681
+ if (peg$c64.test(input.charAt(peg$currPos))) {
2345
2682
  s4 = input.charAt(peg$currPos);
2346
2683
  peg$currPos++;
2347
2684
  } else {
2348
2685
  s4 = null;
2349
- if (peg$silentFails === 0) { peg$fail(peg$c59); }
2686
+ if (peg$silentFails === 0) { peg$fail(peg$c65); }
2350
2687
  }
2351
2688
  }
2352
2689
  if (s3 !== null) {
@@ -2355,15 +2692,15 @@ Emblem.Parser = (function() {
2355
2692
  s2 = s3;
2356
2693
  if (s2 !== null) {
2357
2694
  if (input.charCodeAt(peg$currPos) === 93) {
2358
- s3 = peg$c60;
2695
+ s3 = peg$c30;
2359
2696
  peg$currPos++;
2360
2697
  } else {
2361
2698
  s3 = null;
2362
- if (peg$silentFails === 0) { peg$fail(peg$c61); }
2699
+ if (peg$silentFails === 0) { peg$fail(peg$c31); }
2363
2700
  }
2364
2701
  if (s3 !== null) {
2365
2702
  peg$reportedPos = s0;
2366
- s1 = peg$c62(s2);
2703
+ s1 = peg$c66(s2);
2367
2704
  if (s1 === null) {
2368
2705
  peg$currPos = s0;
2369
2706
  s0 = s1;
@@ -2388,7 +2725,7 @@ Emblem.Parser = (function() {
2388
2725
  peg$silentFails--;
2389
2726
  if (s0 === null) {
2390
2727
  s1 = null;
2391
- if (peg$silentFails === 0) { peg$fail(peg$c48); }
2728
+ if (peg$silentFails === 0) { peg$fail(peg$c56); }
2392
2729
  }
2393
2730
 
2394
2731
  return s0;
@@ -2403,11 +2740,11 @@ Emblem.Parser = (function() {
2403
2740
  s2 = peg$parsenmchar();
2404
2741
  if (s2 === null) {
2405
2742
  if (input.charCodeAt(peg$currPos) === 58) {
2406
- s2 = peg$c64;
2743
+ s2 = peg$c68;
2407
2744
  peg$currPos++;
2408
2745
  } else {
2409
2746
  s2 = null;
2410
- if (peg$silentFails === 0) { peg$fail(peg$c65); }
2747
+ if (peg$silentFails === 0) { peg$fail(peg$c69); }
2411
2748
  }
2412
2749
  }
2413
2750
  while (s2 !== null) {
@@ -2415,11 +2752,11 @@ Emblem.Parser = (function() {
2415
2752
  s2 = peg$parsenmchar();
2416
2753
  if (s2 === null) {
2417
2754
  if (input.charCodeAt(peg$currPos) === 58) {
2418
- s2 = peg$c64;
2755
+ s2 = peg$c68;
2419
2756
  peg$currPos++;
2420
2757
  } else {
2421
2758
  s2 = null;
2422
- if (peg$silentFails === 0) { peg$fail(peg$c65); }
2759
+ if (peg$silentFails === 0) { peg$fail(peg$c69); }
2423
2760
  }
2424
2761
  }
2425
2762
  }
@@ -2430,7 +2767,7 @@ Emblem.Parser = (function() {
2430
2767
  peg$silentFails--;
2431
2768
  if (s0 === null) {
2432
2769
  s1 = null;
2433
- if (peg$silentFails === 0) { peg$fail(peg$c63); }
2770
+ if (peg$silentFails === 0) { peg$fail(peg$c67); }
2434
2771
  }
2435
2772
 
2436
2773
  return s0;
@@ -2471,7 +2808,7 @@ Emblem.Parser = (function() {
2471
2808
  }
2472
2809
  if (s2 !== null) {
2473
2810
  peg$reportedPos = s0;
2474
- s1 = peg$c66(s2);
2811
+ s1 = peg$c70(s2);
2475
2812
  if (s1 === null) {
2476
2813
  peg$currPos = s0;
2477
2814
  s0 = s1;
@@ -2490,6 +2827,82 @@ Emblem.Parser = (function() {
2490
2827
  return s0;
2491
2828
  }
2492
2829
 
2830
+ function peg$parsebracketedHashSegment() {
2831
+ var s0, s1, s2, s3, s4, s5, s6;
2832
+
2833
+ s0 = peg$currPos;
2834
+ s1 = [];
2835
+ s2 = peg$parseINDENT();
2836
+ while (s2 !== null) {
2837
+ s1.push(s2);
2838
+ s2 = peg$parseINDENT();
2839
+ }
2840
+ if (s1 !== null) {
2841
+ s2 = peg$parse_();
2842
+ if (s2 !== null) {
2843
+ s3 = peg$currPos;
2844
+ s4 = peg$parsekey();
2845
+ if (s4 !== null) {
2846
+ if (input.charCodeAt(peg$currPos) === 61) {
2847
+ s5 = peg$c4;
2848
+ peg$currPos++;
2849
+ } else {
2850
+ s5 = null;
2851
+ if (peg$silentFails === 0) { peg$fail(peg$c5); }
2852
+ }
2853
+ if (s5 !== null) {
2854
+ s6 = peg$parseparam();
2855
+ if (s6 !== null) {
2856
+ s4 = [s4, s5, s6];
2857
+ s3 = s4;
2858
+ } else {
2859
+ peg$currPos = s3;
2860
+ s3 = peg$c0;
2861
+ }
2862
+ } else {
2863
+ peg$currPos = s3;
2864
+ s3 = peg$c0;
2865
+ }
2866
+ } else {
2867
+ peg$currPos = s3;
2868
+ s3 = peg$c0;
2869
+ }
2870
+ if (s3 !== null) {
2871
+ s4 = [];
2872
+ s5 = peg$parseTERM();
2873
+ while (s5 !== null) {
2874
+ s4.push(s5);
2875
+ s5 = peg$parseTERM();
2876
+ }
2877
+ if (s4 !== null) {
2878
+ peg$reportedPos = s0;
2879
+ s1 = peg$c71(s3);
2880
+ if (s1 === null) {
2881
+ peg$currPos = s0;
2882
+ s0 = s1;
2883
+ } else {
2884
+ s0 = s1;
2885
+ }
2886
+ } else {
2887
+ peg$currPos = s0;
2888
+ s0 = peg$c0;
2889
+ }
2890
+ } else {
2891
+ peg$currPos = s0;
2892
+ s0 = peg$c0;
2893
+ }
2894
+ } else {
2895
+ peg$currPos = s0;
2896
+ s0 = peg$c0;
2897
+ }
2898
+ } else {
2899
+ peg$currPos = s0;
2900
+ s0 = peg$c0;
2901
+ }
2902
+
2903
+ return s0;
2904
+ }
2905
+
2493
2906
  function peg$parseparam() {
2494
2907
  var s0, s1, s2, s3;
2495
2908
 
@@ -2509,7 +2922,7 @@ Emblem.Parser = (function() {
2509
2922
  s3 = peg$parsesexprClose();
2510
2923
  if (s3 !== null) {
2511
2924
  peg$reportedPos = s0;
2512
- s1 = peg$c67(s2);
2925
+ s1 = peg$c72(s2);
2513
2926
  if (s1 === null) {
2514
2927
  peg$currPos = s0;
2515
2928
  s0 = s1;
@@ -2549,7 +2962,7 @@ Emblem.Parser = (function() {
2549
2962
  s5 = peg$parsepathIdent();
2550
2963
  if (s5 !== null) {
2551
2964
  peg$reportedPos = s3;
2552
- s4 = peg$c68(s4, s5);
2965
+ s4 = peg$c73(s4, s5);
2553
2966
  if (s4 === null) {
2554
2967
  peg$currPos = s3;
2555
2968
  s3 = s4;
@@ -2572,7 +2985,7 @@ Emblem.Parser = (function() {
2572
2985
  s5 = peg$parsepathIdent();
2573
2986
  if (s5 !== null) {
2574
2987
  peg$reportedPos = s3;
2575
- s4 = peg$c68(s4, s5);
2988
+ s4 = peg$c73(s4, s5);
2576
2989
  if (s4 === null) {
2577
2990
  peg$currPos = s3;
2578
2991
  s3 = s4;
@@ -2590,7 +3003,7 @@ Emblem.Parser = (function() {
2590
3003
  }
2591
3004
  if (s2 !== null) {
2592
3005
  peg$reportedPos = s0;
2593
- s1 = peg$c69(s1, s2);
3006
+ s1 = peg$c74(s1, s2);
2594
3007
  if (s1 === null) {
2595
3008
  peg$currPos = s0;
2596
3009
  s0 = s1;
@@ -2613,17 +3026,17 @@ Emblem.Parser = (function() {
2613
3026
  var s0, s1;
2614
3027
 
2615
3028
  peg$silentFails++;
2616
- if (peg$c71.test(input.charAt(peg$currPos))) {
3029
+ if (peg$c76.test(input.charAt(peg$currPos))) {
2617
3030
  s0 = input.charAt(peg$currPos);
2618
3031
  peg$currPos++;
2619
3032
  } else {
2620
3033
  s0 = null;
2621
- if (peg$silentFails === 0) { peg$fail(peg$c72); }
3034
+ if (peg$silentFails === 0) { peg$fail(peg$c77); }
2622
3035
  }
2623
3036
  peg$silentFails--;
2624
3037
  if (s0 === null) {
2625
3038
  s1 = null;
2626
- if (peg$silentFails === 0) { peg$fail(peg$c70); }
3039
+ if (peg$silentFails === 0) { peg$fail(peg$c75); }
2627
3040
  }
2628
3041
 
2629
3042
  return s0;
@@ -2636,7 +3049,7 @@ Emblem.Parser = (function() {
2636
3049
  s1 = peg$parsepath();
2637
3050
  if (s1 !== null) {
2638
3051
  peg$reportedPos = s0;
2639
- s1 = peg$c73(s1);
3052
+ s1 = peg$c78(s1);
2640
3053
  }
2641
3054
  if (s1 === null) {
2642
3055
  peg$currPos = s0;
@@ -2655,7 +3068,7 @@ Emblem.Parser = (function() {
2655
3068
  s1 = peg$parsestring();
2656
3069
  if (s1 !== null) {
2657
3070
  peg$reportedPos = s0;
2658
- s1 = peg$c74(s1);
3071
+ s1 = peg$c79(s1);
2659
3072
  }
2660
3073
  if (s1 === null) {
2661
3074
  peg$currPos = s0;
@@ -2674,7 +3087,7 @@ Emblem.Parser = (function() {
2674
3087
  s1 = peg$parseinteger();
2675
3088
  if (s1 !== null) {
2676
3089
  peg$reportedPos = s0;
2677
- s1 = peg$c75(s1);
3090
+ s1 = peg$c80(s1);
2678
3091
  }
2679
3092
  if (s1 === null) {
2680
3093
  peg$currPos = s0;
@@ -2693,7 +3106,7 @@ Emblem.Parser = (function() {
2693
3106
  s1 = peg$parseboolean();
2694
3107
  if (s1 !== null) {
2695
3108
  peg$reportedPos = s0;
2696
- s1 = peg$c76(s1);
3109
+ s1 = peg$c81(s1);
2697
3110
  }
2698
3111
  if (s1 === null) {
2699
3112
  peg$currPos = s0;
@@ -2709,26 +3122,26 @@ Emblem.Parser = (function() {
2709
3122
  var s0, s1;
2710
3123
 
2711
3124
  peg$silentFails++;
2712
- if (input.substr(peg$currPos, 4) === peg$c78) {
2713
- s0 = peg$c78;
3125
+ if (input.substr(peg$currPos, 4) === peg$c83) {
3126
+ s0 = peg$c83;
2714
3127
  peg$currPos += 4;
2715
3128
  } else {
2716
3129
  s0 = null;
2717
- if (peg$silentFails === 0) { peg$fail(peg$c79); }
3130
+ if (peg$silentFails === 0) { peg$fail(peg$c84); }
2718
3131
  }
2719
3132
  if (s0 === null) {
2720
- if (input.substr(peg$currPos, 5) === peg$c80) {
2721
- s0 = peg$c80;
3133
+ if (input.substr(peg$currPos, 5) === peg$c85) {
3134
+ s0 = peg$c85;
2722
3135
  peg$currPos += 5;
2723
3136
  } else {
2724
3137
  s0 = null;
2725
- if (peg$silentFails === 0) { peg$fail(peg$c81); }
3138
+ if (peg$silentFails === 0) { peg$fail(peg$c86); }
2726
3139
  }
2727
3140
  }
2728
3141
  peg$silentFails--;
2729
3142
  if (s0 === null) {
2730
3143
  s1 = null;
2731
- if (peg$silentFails === 0) { peg$fail(peg$c77); }
3144
+ if (peg$silentFails === 0) { peg$fail(peg$c82); }
2732
3145
  }
2733
3146
 
2734
3147
  return s0;
@@ -2742,33 +3155,33 @@ Emblem.Parser = (function() {
2742
3155
  s1 = peg$currPos;
2743
3156
  s2 = peg$currPos;
2744
3157
  if (input.charCodeAt(peg$currPos) === 45) {
2745
- s3 = peg$c83;
3158
+ s3 = peg$c88;
2746
3159
  peg$currPos++;
2747
3160
  } else {
2748
3161
  s3 = null;
2749
- if (peg$silentFails === 0) { peg$fail(peg$c84); }
3162
+ if (peg$silentFails === 0) { peg$fail(peg$c89); }
2750
3163
  }
2751
3164
  if (s3 === null) {
2752
3165
  s3 = peg$c1;
2753
3166
  }
2754
3167
  if (s3 !== null) {
2755
3168
  s4 = [];
2756
- if (peg$c85.test(input.charAt(peg$currPos))) {
3169
+ if (peg$c90.test(input.charAt(peg$currPos))) {
2757
3170
  s5 = input.charAt(peg$currPos);
2758
3171
  peg$currPos++;
2759
3172
  } else {
2760
3173
  s5 = null;
2761
- if (peg$silentFails === 0) { peg$fail(peg$c86); }
3174
+ if (peg$silentFails === 0) { peg$fail(peg$c91); }
2762
3175
  }
2763
3176
  if (s5 !== null) {
2764
3177
  while (s5 !== null) {
2765
3178
  s4.push(s5);
2766
- if (peg$c85.test(input.charAt(peg$currPos))) {
3179
+ if (peg$c90.test(input.charAt(peg$currPos))) {
2767
3180
  s5 = input.charAt(peg$currPos);
2768
3181
  peg$currPos++;
2769
3182
  } else {
2770
3183
  s5 = null;
2771
- if (peg$silentFails === 0) { peg$fail(peg$c86); }
3184
+ if (peg$silentFails === 0) { peg$fail(peg$c91); }
2772
3185
  }
2773
3186
  }
2774
3187
  } else {
@@ -2791,7 +3204,7 @@ Emblem.Parser = (function() {
2791
3204
  s1 = s2;
2792
3205
  if (s1 !== null) {
2793
3206
  peg$reportedPos = s0;
2794
- s1 = peg$c87(s1);
3207
+ s1 = peg$c92(s1);
2795
3208
  }
2796
3209
  if (s1 === null) {
2797
3210
  peg$currPos = s0;
@@ -2802,7 +3215,7 @@ Emblem.Parser = (function() {
2802
3215
  peg$silentFails--;
2803
3216
  if (s0 === null) {
2804
3217
  s1 = null;
2805
- if (peg$silentFails === 0) { peg$fail(peg$c82); }
3218
+ if (peg$silentFails === 0) { peg$fail(peg$c87); }
2806
3219
  }
2807
3220
 
2808
3221
  return s0;
@@ -2814,21 +3227,21 @@ Emblem.Parser = (function() {
2814
3227
  s0 = peg$currPos;
2815
3228
  s1 = peg$currPos;
2816
3229
  if (input.charCodeAt(peg$currPos) === 34) {
2817
- s2 = peg$c88;
3230
+ s2 = peg$c93;
2818
3231
  peg$currPos++;
2819
3232
  } else {
2820
3233
  s2 = null;
2821
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
3234
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
2822
3235
  }
2823
3236
  if (s2 !== null) {
2824
3237
  s3 = peg$parsehashDoubleQuoteStringValue();
2825
3238
  if (s3 !== null) {
2826
3239
  if (input.charCodeAt(peg$currPos) === 34) {
2827
- s4 = peg$c88;
3240
+ s4 = peg$c93;
2828
3241
  peg$currPos++;
2829
3242
  } else {
2830
3243
  s4 = null;
2831
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
3244
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
2832
3245
  }
2833
3246
  if (s4 !== null) {
2834
3247
  s2 = [s2, s3, s4];
@@ -2848,21 +3261,21 @@ Emblem.Parser = (function() {
2848
3261
  if (s1 === null) {
2849
3262
  s1 = peg$currPos;
2850
3263
  if (input.charCodeAt(peg$currPos) === 39) {
2851
- s2 = peg$c90;
3264
+ s2 = peg$c95;
2852
3265
  peg$currPos++;
2853
3266
  } else {
2854
3267
  s2 = null;
2855
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
3268
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
2856
3269
  }
2857
3270
  if (s2 !== null) {
2858
3271
  s3 = peg$parsehashSingleQuoteStringValue();
2859
3272
  if (s3 !== null) {
2860
3273
  if (input.charCodeAt(peg$currPos) === 39) {
2861
- s4 = peg$c90;
3274
+ s4 = peg$c95;
2862
3275
  peg$currPos++;
2863
3276
  } else {
2864
3277
  s4 = null;
2865
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
3278
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
2866
3279
  }
2867
3280
  if (s4 !== null) {
2868
3281
  s2 = [s2, s3, s4];
@@ -2882,7 +3295,7 @@ Emblem.Parser = (function() {
2882
3295
  }
2883
3296
  if (s1 !== null) {
2884
3297
  peg$reportedPos = s0;
2885
- s1 = peg$c92(s1);
3298
+ s1 = peg$c97(s1);
2886
3299
  }
2887
3300
  if (s1 === null) {
2888
3301
  peg$currPos = s0;
@@ -2911,12 +3324,12 @@ Emblem.Parser = (function() {
2911
3324
  s3 = peg$c0;
2912
3325
  }
2913
3326
  if (s3 !== null) {
2914
- if (peg$c93.test(input.charAt(peg$currPos))) {
3327
+ if (peg$c98.test(input.charAt(peg$currPos))) {
2915
3328
  s4 = input.charAt(peg$currPos);
2916
3329
  peg$currPos++;
2917
3330
  } else {
2918
3331
  s4 = null;
2919
- if (peg$silentFails === 0) { peg$fail(peg$c94); }
3332
+ if (peg$silentFails === 0) { peg$fail(peg$c99); }
2920
3333
  }
2921
3334
  if (s4 !== null) {
2922
3335
  s3 = [s3, s4];
@@ -2943,12 +3356,12 @@ Emblem.Parser = (function() {
2943
3356
  s3 = peg$c0;
2944
3357
  }
2945
3358
  if (s3 !== null) {
2946
- if (peg$c93.test(input.charAt(peg$currPos))) {
3359
+ if (peg$c98.test(input.charAt(peg$currPos))) {
2947
3360
  s4 = input.charAt(peg$currPos);
2948
3361
  peg$currPos++;
2949
3362
  } else {
2950
3363
  s4 = null;
2951
- if (peg$silentFails === 0) { peg$fail(peg$c94); }
3364
+ if (peg$silentFails === 0) { peg$fail(peg$c99); }
2952
3365
  }
2953
3366
  if (s4 !== null) {
2954
3367
  s3 = [s3, s4];
@@ -2987,12 +3400,12 @@ Emblem.Parser = (function() {
2987
3400
  s3 = peg$c0;
2988
3401
  }
2989
3402
  if (s3 !== null) {
2990
- if (peg$c95.test(input.charAt(peg$currPos))) {
3403
+ if (peg$c100.test(input.charAt(peg$currPos))) {
2991
3404
  s4 = input.charAt(peg$currPos);
2992
3405
  peg$currPos++;
2993
3406
  } else {
2994
3407
  s4 = null;
2995
- if (peg$silentFails === 0) { peg$fail(peg$c96); }
3408
+ if (peg$silentFails === 0) { peg$fail(peg$c101); }
2996
3409
  }
2997
3410
  if (s4 !== null) {
2998
3411
  s3 = [s3, s4];
@@ -3019,12 +3432,12 @@ Emblem.Parser = (function() {
3019
3432
  s3 = peg$c0;
3020
3433
  }
3021
3434
  if (s3 !== null) {
3022
- if (peg$c95.test(input.charAt(peg$currPos))) {
3435
+ if (peg$c100.test(input.charAt(peg$currPos))) {
3023
3436
  s4 = input.charAt(peg$currPos);
3024
3437
  peg$currPos++;
3025
3438
  } else {
3026
3439
  s4 = null;
3027
- if (peg$silentFails === 0) { peg$fail(peg$c96); }
3440
+ if (peg$silentFails === 0) { peg$fail(peg$c101); }
3028
3441
  }
3029
3442
  if (s4 !== null) {
3030
3443
  s3 = [s3, s4];
@@ -3049,12 +3462,12 @@ Emblem.Parser = (function() {
3049
3462
  function peg$parsealpha() {
3050
3463
  var s0;
3051
3464
 
3052
- if (peg$c97.test(input.charAt(peg$currPos))) {
3465
+ if (peg$c102.test(input.charAt(peg$currPos))) {
3053
3466
  s0 = input.charAt(peg$currPos);
3054
3467
  peg$currPos++;
3055
3468
  } else {
3056
3469
  s0 = null;
3057
- if (peg$silentFails === 0) { peg$fail(peg$c98); }
3470
+ if (peg$silentFails === 0) { peg$fail(peg$c103); }
3058
3471
  }
3059
3472
 
3060
3473
  return s0;
@@ -3078,7 +3491,7 @@ Emblem.Parser = (function() {
3078
3491
  s4 = peg$parseanyDedent();
3079
3492
  if (s4 !== null) {
3080
3493
  peg$reportedPos = s0;
3081
- s1 = peg$c99(s1, s2, s3);
3494
+ s1 = peg$c104(s1, s2, s3);
3082
3495
  if (s1 === null) {
3083
3496
  peg$currPos = s0;
3084
3497
  s0 = s1;
@@ -3112,12 +3525,12 @@ Emblem.Parser = (function() {
3112
3525
  var s0, s1, s2;
3113
3526
 
3114
3527
  s0 = peg$currPos;
3115
- if (peg$c100.test(input.charAt(peg$currPos))) {
3528
+ if (peg$c105.test(input.charAt(peg$currPos))) {
3116
3529
  s1 = input.charAt(peg$currPos);
3117
3530
  peg$currPos++;
3118
3531
  } else {
3119
3532
  s1 = null;
3120
- if (peg$silentFails === 0) { peg$fail(peg$c101); }
3533
+ if (peg$silentFails === 0) { peg$fail(peg$c106); }
3121
3534
  }
3122
3535
  if (s1 !== null) {
3123
3536
  if (input.charCodeAt(peg$currPos) === 32) {
@@ -3132,7 +3545,7 @@ Emblem.Parser = (function() {
3132
3545
  }
3133
3546
  if (s2 !== null) {
3134
3547
  peg$reportedPos = s0;
3135
- s1 = peg$c55(s1);
3548
+ s1 = peg$c63(s1);
3136
3549
  if (s1 === null) {
3137
3550
  peg$currPos = s0;
3138
3551
  s0 = s1;
@@ -3152,11 +3565,11 @@ Emblem.Parser = (function() {
3152
3565
  s1 = peg$currPos;
3153
3566
  peg$silentFails++;
3154
3567
  if (input.charCodeAt(peg$currPos) === 60) {
3155
- s2 = peg$c102;
3568
+ s2 = peg$c107;
3156
3569
  peg$currPos++;
3157
3570
  } else {
3158
3571
  s2 = null;
3159
- if (peg$silentFails === 0) { peg$fail(peg$c103); }
3572
+ if (peg$silentFails === 0) { peg$fail(peg$c108); }
3160
3573
  }
3161
3574
  peg$silentFails--;
3162
3575
  if (s2 !== null) {
@@ -3167,7 +3580,7 @@ Emblem.Parser = (function() {
3167
3580
  }
3168
3581
  if (s1 !== null) {
3169
3582
  peg$reportedPos = s0;
3170
- s1 = peg$c104();
3583
+ s1 = peg$c109();
3171
3584
  }
3172
3585
  if (s1 === null) {
3173
3586
  peg$currPos = s0;
@@ -3219,7 +3632,7 @@ Emblem.Parser = (function() {
3219
3632
  }
3220
3633
  if (s3 !== null) {
3221
3634
  peg$reportedPos = s0;
3222
- s1 = peg$c105(s1, s2, s3);
3635
+ s1 = peg$c110(s1, s2, s3);
3223
3636
  if (s1 === null) {
3224
3637
  peg$currPos = s0;
3225
3638
  s0 = s1;
@@ -3295,7 +3708,7 @@ Emblem.Parser = (function() {
3295
3708
  s3 = peg$parseTERM();
3296
3709
  if (s3 !== null) {
3297
3710
  peg$reportedPos = s0;
3298
- s1 = peg$c106(s1, s2);
3711
+ s1 = peg$c111(s1, s2);
3299
3712
  if (s1 === null) {
3300
3713
  peg$currPos = s0;
3301
3714
  s0 = s1;
@@ -3323,25 +3736,25 @@ Emblem.Parser = (function() {
3323
3736
 
3324
3737
  s0 = peg$currPos;
3325
3738
  if (input.charCodeAt(peg$currPos) === 34) {
3326
- s1 = peg$c88;
3739
+ s1 = peg$c93;
3327
3740
  peg$currPos++;
3328
3741
  } else {
3329
3742
  s1 = null;
3330
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
3743
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
3331
3744
  }
3332
3745
  if (s1 !== null) {
3333
3746
  s2 = peg$parseattributeTextNodesInner();
3334
3747
  if (s2 !== null) {
3335
3748
  if (input.charCodeAt(peg$currPos) === 34) {
3336
- s3 = peg$c88;
3749
+ s3 = peg$c93;
3337
3750
  peg$currPos++;
3338
3751
  } else {
3339
3752
  s3 = null;
3340
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
3753
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
3341
3754
  }
3342
3755
  if (s3 !== null) {
3343
3756
  peg$reportedPos = s0;
3344
- s1 = peg$c46(s2);
3757
+ s1 = peg$c54(s2);
3345
3758
  if (s1 === null) {
3346
3759
  peg$currPos = s0;
3347
3760
  s0 = s1;
@@ -3363,25 +3776,25 @@ Emblem.Parser = (function() {
3363
3776
  if (s0 === null) {
3364
3777
  s0 = peg$currPos;
3365
3778
  if (input.charCodeAt(peg$currPos) === 39) {
3366
- s1 = peg$c90;
3779
+ s1 = peg$c95;
3367
3780
  peg$currPos++;
3368
3781
  } else {
3369
3782
  s1 = null;
3370
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
3783
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
3371
3784
  }
3372
3785
  if (s1 !== null) {
3373
3786
  s2 = peg$parseattributeTextNodesInnerSingle();
3374
3787
  if (s2 !== null) {
3375
3788
  if (input.charCodeAt(peg$currPos) === 39) {
3376
- s3 = peg$c90;
3789
+ s3 = peg$c95;
3377
3790
  peg$currPos++;
3378
3791
  } else {
3379
3792
  s3 = null;
3380
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
3793
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
3381
3794
  }
3382
3795
  if (s3 !== null) {
3383
3796
  peg$reportedPos = s0;
3384
- s1 = peg$c46(s2);
3797
+ s1 = peg$c54(s2);
3385
3798
  if (s1 === null) {
3386
3799
  peg$currPos = s0;
3387
3800
  s0 = s1;
@@ -3456,7 +3869,7 @@ Emblem.Parser = (function() {
3456
3869
  }
3457
3870
  if (s2 !== null) {
3458
3871
  peg$reportedPos = s0;
3459
- s1 = peg$c107(s1, s2);
3872
+ s1 = peg$c112(s1, s2);
3460
3873
  if (s1 === null) {
3461
3874
  peg$currPos = s0;
3462
3875
  s0 = s1;
@@ -3526,7 +3939,7 @@ Emblem.Parser = (function() {
3526
3939
  }
3527
3940
  if (s2 !== null) {
3528
3941
  peg$reportedPos = s0;
3529
- s1 = peg$c107(s1, s2);
3942
+ s1 = peg$c112(s1, s2);
3530
3943
  if (s1 === null) {
3531
3944
  peg$currPos = s0;
3532
3945
  s0 = s1;
@@ -3563,11 +3976,11 @@ Emblem.Parser = (function() {
3563
3976
  s1 = peg$currPos;
3564
3977
  peg$silentFails++;
3565
3978
  if (input.charCodeAt(peg$currPos) === 123) {
3566
- s2 = peg$c108;
3979
+ s2 = peg$c113;
3567
3980
  peg$currPos++;
3568
3981
  } else {
3569
3982
  s2 = null;
3570
- if (peg$silentFails === 0) { peg$fail(peg$c109); }
3983
+ if (peg$silentFails === 0) { peg$fail(peg$c114); }
3571
3984
  }
3572
3985
  peg$silentFails--;
3573
3986
  if (s2 === null) {
@@ -3579,21 +3992,21 @@ Emblem.Parser = (function() {
3579
3992
  if (s1 !== null) {
3580
3993
  s2 = peg$currPos;
3581
3994
  s3 = [];
3582
- if (peg$c110.test(input.charAt(peg$currPos))) {
3995
+ if (peg$c115.test(input.charAt(peg$currPos))) {
3583
3996
  s4 = input.charAt(peg$currPos);
3584
3997
  peg$currPos++;
3585
3998
  } else {
3586
3999
  s4 = null;
3587
- if (peg$silentFails === 0) { peg$fail(peg$c111); }
4000
+ if (peg$silentFails === 0) { peg$fail(peg$c116); }
3588
4001
  }
3589
4002
  while (s4 !== null) {
3590
4003
  s3.push(s4);
3591
- if (peg$c110.test(input.charAt(peg$currPos))) {
4004
+ if (peg$c115.test(input.charAt(peg$currPos))) {
3592
4005
  s4 = input.charAt(peg$currPos);
3593
4006
  peg$currPos++;
3594
4007
  } else {
3595
4008
  s4 = null;
3596
- if (peg$silentFails === 0) { peg$fail(peg$c111); }
4009
+ if (peg$silentFails === 0) { peg$fail(peg$c116); }
3597
4010
  }
3598
4011
  }
3599
4012
  if (s3 !== null) {
@@ -3602,7 +4015,7 @@ Emblem.Parser = (function() {
3602
4015
  s2 = s3;
3603
4016
  if (s2 !== null) {
3604
4017
  peg$reportedPos = s0;
3605
- s1 = peg$c112(s2);
4018
+ s1 = peg$c117(s2);
3606
4019
  if (s1 === null) {
3607
4020
  peg$currPos = s0;
3608
4021
  s0 = s1;
@@ -3636,7 +4049,7 @@ Emblem.Parser = (function() {
3636
4049
  s5 = peg$parsedoubleClose();
3637
4050
  if (s5 !== null) {
3638
4051
  peg$reportedPos = s0;
3639
- s1 = peg$c113(s3);
4052
+ s1 = peg$c118(s3);
3640
4053
  if (s1 === null) {
3641
4054
  peg$currPos = s0;
3642
4055
  s0 = s1;
@@ -3676,7 +4089,7 @@ Emblem.Parser = (function() {
3676
4089
  s5 = peg$parsehashStacheClose();
3677
4090
  if (s5 !== null) {
3678
4091
  peg$reportedPos = s0;
3679
- s1 = peg$c113(s3);
4092
+ s1 = peg$c118(s3);
3680
4093
  if (s1 === null) {
3681
4094
  peg$currPos = s0;
3682
4095
  s0 = s1;
@@ -3723,7 +4136,7 @@ Emblem.Parser = (function() {
3723
4136
  s5 = peg$parsetripleClose();
3724
4137
  if (s5 !== null) {
3725
4138
  peg$reportedPos = s0;
3726
- s1 = peg$c114(s3);
4139
+ s1 = peg$c119(s3);
3727
4140
  if (s1 === null) {
3728
4141
  peg$currPos = s0;
3729
4142
  s0 = s1;
@@ -3775,7 +4188,7 @@ Emblem.Parser = (function() {
3775
4188
  s1 = s2;
3776
4189
  if (s1 !== null) {
3777
4190
  peg$reportedPos = s0;
3778
- s1 = peg$c115(s1);
4191
+ s1 = peg$c120(s1);
3779
4192
  }
3780
4193
  if (s1 === null) {
3781
4194
  peg$currPos = s0;
@@ -3808,7 +4221,7 @@ Emblem.Parser = (function() {
3808
4221
  s1 = s2;
3809
4222
  if (s1 !== null) {
3810
4223
  peg$reportedPos = s0;
3811
- s1 = peg$c115(s1);
4224
+ s1 = peg$c120(s1);
3812
4225
  }
3813
4226
  if (s1 === null) {
3814
4227
  peg$currPos = s0;
@@ -3829,11 +4242,11 @@ Emblem.Parser = (function() {
3829
4242
  s2 = peg$parsenonMustacheUnit();
3830
4243
  if (s2 === null) {
3831
4244
  if (input.charCodeAt(peg$currPos) === 34) {
3832
- s2 = peg$c88;
4245
+ s2 = peg$c93;
3833
4246
  peg$currPos++;
3834
4247
  } else {
3835
4248
  s2 = null;
3836
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
4249
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
3837
4250
  }
3838
4251
  }
3839
4252
  peg$silentFails--;
@@ -3849,7 +4262,7 @@ Emblem.Parser = (function() {
3849
4262
  peg$currPos++;
3850
4263
  } else {
3851
4264
  s2 = null;
3852
- if (peg$silentFails === 0) { peg$fail(peg$c116); }
4265
+ if (peg$silentFails === 0) { peg$fail(peg$c121); }
3853
4266
  }
3854
4267
  if (s2 !== null) {
3855
4268
  peg$reportedPos = s0;
@@ -3881,11 +4294,11 @@ Emblem.Parser = (function() {
3881
4294
  s2 = peg$parsenonMustacheUnit();
3882
4295
  if (s2 === null) {
3883
4296
  if (input.charCodeAt(peg$currPos) === 39) {
3884
- s2 = peg$c90;
4297
+ s2 = peg$c95;
3885
4298
  peg$currPos++;
3886
4299
  } else {
3887
4300
  s2 = null;
3888
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
4301
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
3889
4302
  }
3890
4303
  }
3891
4304
  peg$silentFails--;
@@ -3901,7 +4314,7 @@ Emblem.Parser = (function() {
3901
4314
  peg$currPos++;
3902
4315
  } else {
3903
4316
  s2 = null;
3904
- if (peg$silentFails === 0) { peg$fail(peg$c116); }
4317
+ if (peg$silentFails === 0) { peg$fail(peg$c121); }
3905
4318
  }
3906
4319
  if (s2 !== null) {
3907
4320
  peg$reportedPos = s0;
@@ -3945,7 +4358,7 @@ Emblem.Parser = (function() {
3945
4358
  s1 = s2;
3946
4359
  if (s1 !== null) {
3947
4360
  peg$reportedPos = s0;
3948
- s1 = peg$c115(s1);
4361
+ s1 = peg$c120(s1);
3949
4362
  }
3950
4363
  if (s1 === null) {
3951
4364
  peg$currPos = s0;
@@ -3977,7 +4390,7 @@ Emblem.Parser = (function() {
3977
4390
  peg$currPos++;
3978
4391
  } else {
3979
4392
  s2 = null;
3980
- if (peg$silentFails === 0) { peg$fail(peg$c116); }
4393
+ if (peg$silentFails === 0) { peg$fail(peg$c121); }
3981
4394
  }
3982
4395
  if (s2 !== null) {
3983
4396
  peg$reportedPos = s0;
@@ -4035,7 +4448,7 @@ Emblem.Parser = (function() {
4035
4448
  s5 = peg$parsesingleClose();
4036
4449
  if (s5 !== null) {
4037
4450
  peg$reportedPos = s0;
4038
- s1 = peg$c113(s3);
4451
+ s1 = peg$c118(s3);
4039
4452
  if (s1 === null) {
4040
4453
  peg$currPos = s0;
4041
4454
  s0 = s1;
@@ -4085,16 +4498,16 @@ Emblem.Parser = (function() {
4085
4498
 
4086
4499
  peg$silentFails++;
4087
4500
  if (input.charCodeAt(peg$currPos) === 123) {
4088
- s0 = peg$c108;
4501
+ s0 = peg$c113;
4089
4502
  peg$currPos++;
4090
4503
  } else {
4091
4504
  s0 = null;
4092
- if (peg$silentFails === 0) { peg$fail(peg$c109); }
4505
+ if (peg$silentFails === 0) { peg$fail(peg$c114); }
4093
4506
  }
4094
4507
  peg$silentFails--;
4095
4508
  if (s0 === null) {
4096
4509
  s1 = null;
4097
- if (peg$silentFails === 0) { peg$fail(peg$c117); }
4510
+ if (peg$silentFails === 0) { peg$fail(peg$c122); }
4098
4511
  }
4099
4512
 
4100
4513
  return s0;
@@ -4104,17 +4517,17 @@ Emblem.Parser = (function() {
4104
4517
  var s0, s1;
4105
4518
 
4106
4519
  peg$silentFails++;
4107
- if (input.substr(peg$currPos, 2) === peg$c119) {
4108
- s0 = peg$c119;
4520
+ if (input.substr(peg$currPos, 2) === peg$c124) {
4521
+ s0 = peg$c124;
4109
4522
  peg$currPos += 2;
4110
4523
  } else {
4111
4524
  s0 = null;
4112
- if (peg$silentFails === 0) { peg$fail(peg$c120); }
4525
+ if (peg$silentFails === 0) { peg$fail(peg$c125); }
4113
4526
  }
4114
4527
  peg$silentFails--;
4115
4528
  if (s0 === null) {
4116
4529
  s1 = null;
4117
- if (peg$silentFails === 0) { peg$fail(peg$c118); }
4530
+ if (peg$silentFails === 0) { peg$fail(peg$c123); }
4118
4531
  }
4119
4532
 
4120
4533
  return s0;
@@ -4124,17 +4537,17 @@ Emblem.Parser = (function() {
4124
4537
  var s0, s1;
4125
4538
 
4126
4539
  peg$silentFails++;
4127
- if (input.substr(peg$currPos, 3) === peg$c122) {
4128
- s0 = peg$c122;
4540
+ if (input.substr(peg$currPos, 3) === peg$c127) {
4541
+ s0 = peg$c127;
4129
4542
  peg$currPos += 3;
4130
4543
  } else {
4131
4544
  s0 = null;
4132
- if (peg$silentFails === 0) { peg$fail(peg$c123); }
4545
+ if (peg$silentFails === 0) { peg$fail(peg$c128); }
4133
4546
  }
4134
4547
  peg$silentFails--;
4135
4548
  if (s0 === null) {
4136
4549
  s1 = null;
4137
- if (peg$silentFails === 0) { peg$fail(peg$c121); }
4550
+ if (peg$silentFails === 0) { peg$fail(peg$c126); }
4138
4551
  }
4139
4552
 
4140
4553
  return s0;
@@ -4145,16 +4558,16 @@ Emblem.Parser = (function() {
4145
4558
 
4146
4559
  peg$silentFails++;
4147
4560
  if (input.charCodeAt(peg$currPos) === 125) {
4148
- s0 = peg$c125;
4561
+ s0 = peg$c130;
4149
4562
  peg$currPos++;
4150
4563
  } else {
4151
4564
  s0 = null;
4152
- if (peg$silentFails === 0) { peg$fail(peg$c126); }
4565
+ if (peg$silentFails === 0) { peg$fail(peg$c131); }
4153
4566
  }
4154
4567
  peg$silentFails--;
4155
4568
  if (s0 === null) {
4156
4569
  s1 = null;
4157
- if (peg$silentFails === 0) { peg$fail(peg$c124); }
4570
+ if (peg$silentFails === 0) { peg$fail(peg$c129); }
4158
4571
  }
4159
4572
 
4160
4573
  return s0;
@@ -4164,17 +4577,17 @@ Emblem.Parser = (function() {
4164
4577
  var s0, s1;
4165
4578
 
4166
4579
  peg$silentFails++;
4167
- if (input.substr(peg$currPos, 2) === peg$c128) {
4168
- s0 = peg$c128;
4580
+ if (input.substr(peg$currPos, 2) === peg$c133) {
4581
+ s0 = peg$c133;
4169
4582
  peg$currPos += 2;
4170
4583
  } else {
4171
4584
  s0 = null;
4172
- if (peg$silentFails === 0) { peg$fail(peg$c129); }
4585
+ if (peg$silentFails === 0) { peg$fail(peg$c134); }
4173
4586
  }
4174
4587
  peg$silentFails--;
4175
4588
  if (s0 === null) {
4176
4589
  s1 = null;
4177
- if (peg$silentFails === 0) { peg$fail(peg$c127); }
4590
+ if (peg$silentFails === 0) { peg$fail(peg$c132); }
4178
4591
  }
4179
4592
 
4180
4593
  return s0;
@@ -4184,17 +4597,17 @@ Emblem.Parser = (function() {
4184
4597
  var s0, s1;
4185
4598
 
4186
4599
  peg$silentFails++;
4187
- if (input.substr(peg$currPos, 3) === peg$c131) {
4188
- s0 = peg$c131;
4600
+ if (input.substr(peg$currPos, 3) === peg$c136) {
4601
+ s0 = peg$c136;
4189
4602
  peg$currPos += 3;
4190
4603
  } else {
4191
4604
  s0 = null;
4192
- if (peg$silentFails === 0) { peg$fail(peg$c132); }
4605
+ if (peg$silentFails === 0) { peg$fail(peg$c137); }
4193
4606
  }
4194
4607
  peg$silentFails--;
4195
4608
  if (s0 === null) {
4196
4609
  s1 = null;
4197
- if (peg$silentFails === 0) { peg$fail(peg$c130); }
4610
+ if (peg$silentFails === 0) { peg$fail(peg$c135); }
4198
4611
  }
4199
4612
 
4200
4613
  return s0;
@@ -4205,16 +4618,16 @@ Emblem.Parser = (function() {
4205
4618
 
4206
4619
  peg$silentFails++;
4207
4620
  if (input.charCodeAt(peg$currPos) === 40) {
4208
- s0 = peg$c134;
4621
+ s0 = peg$c139;
4209
4622
  peg$currPos++;
4210
4623
  } else {
4211
4624
  s0 = null;
4212
- if (peg$silentFails === 0) { peg$fail(peg$c135); }
4625
+ if (peg$silentFails === 0) { peg$fail(peg$c140); }
4213
4626
  }
4214
4627
  peg$silentFails--;
4215
4628
  if (s0 === null) {
4216
4629
  s1 = null;
4217
- if (peg$silentFails === 0) { peg$fail(peg$c133); }
4630
+ if (peg$silentFails === 0) { peg$fail(peg$c138); }
4218
4631
  }
4219
4632
 
4220
4633
  return s0;
@@ -4225,16 +4638,16 @@ Emblem.Parser = (function() {
4225
4638
 
4226
4639
  peg$silentFails++;
4227
4640
  if (input.charCodeAt(peg$currPos) === 41) {
4228
- s0 = peg$c137;
4641
+ s0 = peg$c142;
4229
4642
  peg$currPos++;
4230
4643
  } else {
4231
4644
  s0 = null;
4232
- if (peg$silentFails === 0) { peg$fail(peg$c138); }
4645
+ if (peg$silentFails === 0) { peg$fail(peg$c143); }
4233
4646
  }
4234
4647
  peg$silentFails--;
4235
4648
  if (s0 === null) {
4236
4649
  s1 = null;
4237
- if (peg$silentFails === 0) { peg$fail(peg$c136); }
4650
+ if (peg$silentFails === 0) { peg$fail(peg$c141); }
4238
4651
  }
4239
4652
 
4240
4653
  return s0;
@@ -4244,17 +4657,17 @@ Emblem.Parser = (function() {
4244
4657
  var s0, s1;
4245
4658
 
4246
4659
  peg$silentFails++;
4247
- if (input.substr(peg$currPos, 2) === peg$c140) {
4248
- s0 = peg$c140;
4660
+ if (input.substr(peg$currPos, 2) === peg$c145) {
4661
+ s0 = peg$c145;
4249
4662
  peg$currPos += 2;
4250
4663
  } else {
4251
4664
  s0 = null;
4252
- if (peg$silentFails === 0) { peg$fail(peg$c141); }
4665
+ if (peg$silentFails === 0) { peg$fail(peg$c146); }
4253
4666
  }
4254
4667
  peg$silentFails--;
4255
4668
  if (s0 === null) {
4256
4669
  s1 = null;
4257
- if (peg$silentFails === 0) { peg$fail(peg$c139); }
4670
+ if (peg$silentFails === 0) { peg$fail(peg$c144); }
4258
4671
  }
4259
4672
 
4260
4673
  return s0;
@@ -4265,16 +4678,16 @@ Emblem.Parser = (function() {
4265
4678
 
4266
4679
  peg$silentFails++;
4267
4680
  if (input.charCodeAt(peg$currPos) === 125) {
4268
- s0 = peg$c125;
4681
+ s0 = peg$c130;
4269
4682
  peg$currPos++;
4270
4683
  } else {
4271
4684
  s0 = null;
4272
- if (peg$silentFails === 0) { peg$fail(peg$c126); }
4685
+ if (peg$silentFails === 0) { peg$fail(peg$c131); }
4273
4686
  }
4274
4687
  peg$silentFails--;
4275
4688
  if (s0 === null) {
4276
4689
  s1 = null;
4277
- if (peg$silentFails === 0) { peg$fail(peg$c142); }
4690
+ if (peg$silentFails === 0) { peg$fail(peg$c147); }
4278
4691
  }
4279
4692
 
4280
4693
  return s0;
@@ -4284,12 +4697,12 @@ Emblem.Parser = (function() {
4284
4697
  var s0, s1, s2;
4285
4698
 
4286
4699
  s0 = peg$currPos;
4287
- if (input.substr(peg$currPos, 2) === peg$c143) {
4288
- s1 = peg$c143;
4700
+ if (input.substr(peg$currPos, 2) === peg$c148) {
4701
+ s1 = peg$c148;
4289
4702
  peg$currPos += 2;
4290
4703
  } else {
4291
4704
  s1 = null;
4292
- if (peg$silentFails === 0) { peg$fail(peg$c144); }
4705
+ if (peg$silentFails === 0) { peg$fail(peg$c149); }
4293
4706
  }
4294
4707
  if (s1 !== null) {
4295
4708
  if (input.charCodeAt(peg$currPos) === 32) {
@@ -4304,7 +4717,7 @@ Emblem.Parser = (function() {
4304
4717
  }
4305
4718
  if (s2 !== null) {
4306
4719
  peg$reportedPos = s0;
4307
- s1 = peg$c145();
4720
+ s1 = peg$c150();
4308
4721
  if (s1 === null) {
4309
4722
  peg$currPos = s0;
4310
4723
  s0 = s1;
@@ -4341,7 +4754,7 @@ Emblem.Parser = (function() {
4341
4754
  }
4342
4755
  if (s2 !== null) {
4343
4756
  peg$reportedPos = s0;
4344
- s1 = peg$c146();
4757
+ s1 = peg$c151();
4345
4758
  if (s1 === null) {
4346
4759
  peg$currPos = s0;
4347
4760
  s0 = s1;
@@ -4387,7 +4800,7 @@ Emblem.Parser = (function() {
4387
4800
  }
4388
4801
  if (s3 !== null) {
4389
4802
  peg$reportedPos = peg$currPos;
4390
- s4 = peg$c147(s1, s2);
4803
+ s4 = peg$c152(s1, s2);
4391
4804
  if (s4) {
4392
4805
  s4 = peg$c1;
4393
4806
  } else {
@@ -4417,32 +4830,53 @@ Emblem.Parser = (function() {
4417
4830
  }
4418
4831
 
4419
4832
  function peg$parseinHtmlTag() {
4420
- var s0, s1, s2, s3, s4;
4833
+ var s0, s1, s2, s3, s4, s5, s6;
4421
4834
 
4422
4835
  s0 = peg$currPos;
4423
4836
  s1 = peg$parsehtmlStart();
4424
4837
  if (s1 !== null) {
4425
- s2 = [];
4426
- s3 = peg$parseinTagMustache();
4427
- while (s3 !== null) {
4428
- s2.push(s3);
4429
- s3 = peg$parseinTagMustache();
4838
+ s2 = peg$currPos;
4839
+ peg$silentFails++;
4840
+ if (input.substr(peg$currPos, 2) === peg$c44) {
4841
+ s3 = peg$c44;
4842
+ peg$currPos += 2;
4843
+ } else {
4844
+ s3 = null;
4845
+ if (peg$silentFails === 0) { peg$fail(peg$c45); }
4846
+ }
4847
+ peg$silentFails--;
4848
+ if (s3 === null) {
4849
+ s2 = peg$c1;
4850
+ } else {
4851
+ peg$currPos = s2;
4852
+ s2 = peg$c0;
4430
4853
  }
4431
4854
  if (s2 !== null) {
4432
4855
  s3 = [];
4433
- s4 = peg$parsefullAttribute();
4856
+ s4 = peg$parseinTagMustache();
4434
4857
  while (s4 !== null) {
4435
4858
  s3.push(s4);
4436
- s4 = peg$parsefullAttribute();
4859
+ s4 = peg$parseinTagMustache();
4437
4860
  }
4438
4861
  if (s3 !== null) {
4439
- peg$reportedPos = s0;
4440
- s1 = peg$c148(s1, s2, s3);
4441
- if (s1 === null) {
4442
- peg$currPos = s0;
4443
- s0 = s1;
4862
+ s4 = [];
4863
+ s5 = peg$parsefullAttribute();
4864
+ while (s5 !== null) {
4865
+ s4.push(s5);
4866
+ s5 = peg$parsefullAttribute();
4867
+ }
4868
+ if (s4 !== null) {
4869
+ peg$reportedPos = s0;
4870
+ s1 = peg$c153(s1, s3, s4);
4871
+ if (s1 === null) {
4872
+ peg$currPos = s0;
4873
+ s0 = s1;
4874
+ } else {
4875
+ s0 = s1;
4876
+ }
4444
4877
  } else {
4445
- s0 = s1;
4878
+ peg$currPos = s0;
4879
+ s0 = peg$c0;
4446
4880
  }
4447
4881
  } else {
4448
4882
  peg$currPos = s0;
@@ -4456,6 +4890,106 @@ Emblem.Parser = (function() {
4456
4890
  peg$currPos = s0;
4457
4891
  s0 = peg$c0;
4458
4892
  }
4893
+ if (s0 === null) {
4894
+ s0 = peg$currPos;
4895
+ s1 = peg$parsehtmlStart();
4896
+ if (s1 !== null) {
4897
+ s2 = [];
4898
+ s3 = peg$currPos;
4899
+ if (input.substr(peg$currPos, 2) === peg$c44) {
4900
+ s4 = peg$c44;
4901
+ peg$currPos += 2;
4902
+ } else {
4903
+ s4 = null;
4904
+ if (peg$silentFails === 0) { peg$fail(peg$c45); }
4905
+ }
4906
+ if (s4 !== null) {
4907
+ s5 = [];
4908
+ s6 = peg$parseTERM();
4909
+ while (s6 !== null) {
4910
+ s5.push(s6);
4911
+ s6 = peg$parseTERM();
4912
+ }
4913
+ if (s5 !== null) {
4914
+ s4 = [s4, s5];
4915
+ s3 = s4;
4916
+ } else {
4917
+ peg$currPos = s3;
4918
+ s3 = peg$c0;
4919
+ }
4920
+ } else {
4921
+ peg$currPos = s3;
4922
+ s3 = peg$c0;
4923
+ }
4924
+ while (s3 !== null) {
4925
+ s2.push(s3);
4926
+ s3 = peg$currPos;
4927
+ if (input.substr(peg$currPos, 2) === peg$c44) {
4928
+ s4 = peg$c44;
4929
+ peg$currPos += 2;
4930
+ } else {
4931
+ s4 = null;
4932
+ if (peg$silentFails === 0) { peg$fail(peg$c45); }
4933
+ }
4934
+ if (s4 !== null) {
4935
+ s5 = [];
4936
+ s6 = peg$parseTERM();
4937
+ while (s6 !== null) {
4938
+ s5.push(s6);
4939
+ s6 = peg$parseTERM();
4940
+ }
4941
+ if (s5 !== null) {
4942
+ s4 = [s4, s5];
4943
+ s3 = s4;
4944
+ } else {
4945
+ peg$currPos = s3;
4946
+ s3 = peg$c0;
4947
+ }
4948
+ } else {
4949
+ peg$currPos = s3;
4950
+ s3 = peg$c0;
4951
+ }
4952
+ }
4953
+ if (s2 !== null) {
4954
+ s3 = [];
4955
+ s4 = peg$parseinTagMustache();
4956
+ while (s4 !== null) {
4957
+ s3.push(s4);
4958
+ s4 = peg$parseinTagMustache();
4959
+ }
4960
+ if (s3 !== null) {
4961
+ s4 = [];
4962
+ s5 = peg$parsebracketedAttribute();
4963
+ while (s5 !== null) {
4964
+ s4.push(s5);
4965
+ s5 = peg$parsebracketedAttribute();
4966
+ }
4967
+ if (s4 !== null) {
4968
+ peg$reportedPos = s0;
4969
+ s1 = peg$c153(s1, s3, s4);
4970
+ if (s1 === null) {
4971
+ peg$currPos = s0;
4972
+ s0 = s1;
4973
+ } else {
4974
+ s0 = s1;
4975
+ }
4976
+ } else {
4977
+ peg$currPos = s0;
4978
+ s0 = peg$c0;
4979
+ }
4980
+ } else {
4981
+ peg$currPos = s0;
4982
+ s0 = peg$c0;
4983
+ }
4984
+ } else {
4985
+ peg$currPos = s0;
4986
+ s0 = peg$c0;
4987
+ }
4988
+ } else {
4989
+ peg$currPos = s0;
4990
+ s0 = peg$c0;
4991
+ }
4992
+ }
4459
4993
 
4460
4994
  return s0;
4461
4995
  }
@@ -4469,7 +5003,7 @@ Emblem.Parser = (function() {
4469
5003
  s3 = peg$parseidShorthand();
4470
5004
  if (s3 !== null) {
4471
5005
  peg$reportedPos = s2;
4472
- s3 = peg$c149(s3);
5006
+ s3 = peg$c154(s3);
4473
5007
  }
4474
5008
  if (s3 === null) {
4475
5009
  peg$currPos = s2;
@@ -4482,7 +5016,7 @@ Emblem.Parser = (function() {
4482
5016
  s3 = peg$parseclassShorthand();
4483
5017
  if (s3 !== null) {
4484
5018
  peg$reportedPos = s2;
4485
- s3 = peg$c150(s3);
5019
+ s3 = peg$c155(s3);
4486
5020
  }
4487
5021
  if (s3 === null) {
4488
5022
  peg$currPos = s2;
@@ -4498,7 +5032,7 @@ Emblem.Parser = (function() {
4498
5032
  s3 = peg$parseidShorthand();
4499
5033
  if (s3 !== null) {
4500
5034
  peg$reportedPos = s2;
4501
- s3 = peg$c149(s3);
5035
+ s3 = peg$c154(s3);
4502
5036
  }
4503
5037
  if (s3 === null) {
4504
5038
  peg$currPos = s2;
@@ -4511,7 +5045,7 @@ Emblem.Parser = (function() {
4511
5045
  s3 = peg$parseclassShorthand();
4512
5046
  if (s3 !== null) {
4513
5047
  peg$reportedPos = s2;
4514
- s3 = peg$c150(s3);
5048
+ s3 = peg$c155(s3);
4515
5049
  }
4516
5050
  if (s3 === null) {
4517
5051
  peg$currPos = s2;
@@ -4526,7 +5060,7 @@ Emblem.Parser = (function() {
4526
5060
  }
4527
5061
  if (s1 !== null) {
4528
5062
  peg$reportedPos = s0;
4529
- s1 = peg$c151(s1);
5063
+ s1 = peg$c156(s1);
4530
5064
  }
4531
5065
  if (s1 === null) {
4532
5066
  peg$currPos = s0;
@@ -4580,7 +5114,7 @@ Emblem.Parser = (function() {
4580
5114
  }
4581
5115
  if (s2 !== null) {
4582
5116
  peg$reportedPos = s0;
4583
- s1 = peg$c152(s2);
5117
+ s1 = peg$c157(s2);
4584
5118
  if (s1 === null) {
4585
5119
  peg$currPos = s0;
4586
5120
  s0 = s1;
@@ -4599,15 +5133,94 @@ Emblem.Parser = (function() {
4599
5133
  return s0;
4600
5134
  }
4601
5135
 
5136
+ function peg$parsebracketedAttribute() {
5137
+ var s0, s1, s2, s3, s4, s5;
5138
+
5139
+ s0 = peg$currPos;
5140
+ s1 = [];
5141
+ s2 = peg$parseINDENT();
5142
+ while (s2 !== null) {
5143
+ s1.push(s2);
5144
+ s2 = peg$parseINDENT();
5145
+ }
5146
+ if (s1 !== null) {
5147
+ s2 = [];
5148
+ if (input.charCodeAt(peg$currPos) === 32) {
5149
+ s3 = peg$c25;
5150
+ peg$currPos++;
5151
+ } else {
5152
+ s3 = null;
5153
+ if (peg$silentFails === 0) { peg$fail(peg$c26); }
5154
+ }
5155
+ while (s3 !== null) {
5156
+ s2.push(s3);
5157
+ if (input.charCodeAt(peg$currPos) === 32) {
5158
+ s3 = peg$c25;
5159
+ peg$currPos++;
5160
+ } else {
5161
+ s3 = null;
5162
+ if (peg$silentFails === 0) { peg$fail(peg$c26); }
5163
+ }
5164
+ }
5165
+ if (s2 !== null) {
5166
+ s3 = peg$parseactionAttribute();
5167
+ if (s3 === null) {
5168
+ s3 = peg$parsebooleanAttribute();
5169
+ if (s3 === null) {
5170
+ s3 = peg$parseboundAttribute();
5171
+ if (s3 === null) {
5172
+ s3 = peg$parserawMustacheAttribute();
5173
+ if (s3 === null) {
5174
+ s3 = peg$parsenormalAttribute();
5175
+ }
5176
+ }
5177
+ }
5178
+ }
5179
+ if (s3 !== null) {
5180
+ s4 = [];
5181
+ s5 = peg$parseTERM();
5182
+ while (s5 !== null) {
5183
+ s4.push(s5);
5184
+ s5 = peg$parseTERM();
5185
+ }
5186
+ if (s4 !== null) {
5187
+ peg$reportedPos = s0;
5188
+ s1 = peg$c157(s3);
5189
+ if (s1 === null) {
5190
+ peg$currPos = s0;
5191
+ s0 = s1;
5192
+ } else {
5193
+ s0 = s1;
5194
+ }
5195
+ } else {
5196
+ peg$currPos = s0;
5197
+ s0 = peg$c0;
5198
+ }
5199
+ } else {
5200
+ peg$currPos = s0;
5201
+ s0 = peg$c0;
5202
+ }
5203
+ } else {
5204
+ peg$currPos = s0;
5205
+ s0 = peg$c0;
5206
+ }
5207
+ } else {
5208
+ peg$currPos = s0;
5209
+ s0 = peg$c0;
5210
+ }
5211
+
5212
+ return s0;
5213
+ }
5214
+
4602
5215
  function peg$parseboundAttributeValueChar() {
4603
5216
  var s0;
4604
5217
 
4605
- if (peg$c153.test(input.charAt(peg$currPos))) {
5218
+ if (peg$c158.test(input.charAt(peg$currPos))) {
4606
5219
  s0 = input.charAt(peg$currPos);
4607
5220
  peg$currPos++;
4608
5221
  } else {
4609
5222
  s0 = null;
4610
- if (peg$silentFails === 0) { peg$fail(peg$c154); }
5223
+ if (peg$silentFails === 0) { peg$fail(peg$c159); }
4611
5224
  }
4612
5225
  if (s0 === null) {
4613
5226
  s0 = peg$parsenonSeparatorColon();
@@ -4625,7 +5238,7 @@ Emblem.Parser = (function() {
4625
5238
  s1 = peg$parsepathIdNode();
4626
5239
  if (s1 !== null) {
4627
5240
  peg$reportedPos = s0;
4628
- s1 = peg$c155(s1);
5241
+ s1 = peg$c160(s1);
4629
5242
  }
4630
5243
  if (s1 === null) {
4631
5244
  peg$currPos = s0;
@@ -4644,21 +5257,21 @@ Emblem.Parser = (function() {
4644
5257
  s0 = peg$currPos;
4645
5258
  s1 = peg$currPos;
4646
5259
  if (input.charCodeAt(peg$currPos) === 34) {
4647
- s2 = peg$c88;
5260
+ s2 = peg$c93;
4648
5261
  peg$currPos++;
4649
5262
  } else {
4650
5263
  s2 = null;
4651
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
5264
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
4652
5265
  }
4653
5266
  if (s2 !== null) {
4654
5267
  s3 = peg$parseinMustache();
4655
5268
  if (s3 !== null) {
4656
5269
  if (input.charCodeAt(peg$currPos) === 34) {
4657
- s4 = peg$c88;
5270
+ s4 = peg$c93;
4658
5271
  peg$currPos++;
4659
5272
  } else {
4660
5273
  s4 = null;
4661
- if (peg$silentFails === 0) { peg$fail(peg$c89); }
5274
+ if (peg$silentFails === 0) { peg$fail(peg$c94); }
4662
5275
  }
4663
5276
  if (s4 !== null) {
4664
5277
  s2 = [s2, s3, s4];
@@ -4678,21 +5291,21 @@ Emblem.Parser = (function() {
4678
5291
  if (s1 === null) {
4679
5292
  s1 = peg$currPos;
4680
5293
  if (input.charCodeAt(peg$currPos) === 39) {
4681
- s2 = peg$c90;
5294
+ s2 = peg$c95;
4682
5295
  peg$currPos++;
4683
5296
  } else {
4684
5297
  s2 = null;
4685
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
5298
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
4686
5299
  }
4687
5300
  if (s2 !== null) {
4688
5301
  s3 = peg$parseinMustache();
4689
5302
  if (s3 !== null) {
4690
5303
  if (input.charCodeAt(peg$currPos) === 39) {
4691
- s4 = peg$c90;
5304
+ s4 = peg$c95;
4692
5305
  peg$currPos++;
4693
5306
  } else {
4694
5307
  s4 = null;
4695
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
5308
+ if (peg$silentFails === 0) { peg$fail(peg$c96); }
4696
5309
  }
4697
5310
  if (s4 !== null) {
4698
5311
  s2 = [s2, s3, s4];
@@ -4712,7 +5325,7 @@ Emblem.Parser = (function() {
4712
5325
  }
4713
5326
  if (s1 !== null) {
4714
5327
  peg$reportedPos = s0;
4715
- s1 = peg$c92(s1);
5328
+ s1 = peg$c97(s1);
4716
5329
  }
4717
5330
  if (s1 === null) {
4718
5331
  peg$currPos = s0;
@@ -4741,7 +5354,7 @@ Emblem.Parser = (function() {
4741
5354
  s3 = peg$parseactionValue();
4742
5355
  if (s3 !== null) {
4743
5356
  peg$reportedPos = s0;
4744
- s1 = peg$c156(s1, s3);
5357
+ s1 = peg$c161(s1, s3);
4745
5358
  if (s1 === null) {
4746
5359
  peg$currPos = s0;
4747
5360
  s0 = s1;
@@ -4778,25 +5391,25 @@ Emblem.Parser = (function() {
4778
5391
  if (peg$silentFails === 0) { peg$fail(peg$c5); }
4779
5392
  }
4780
5393
  if (s2 !== null) {
4781
- if (input.substr(peg$currPos, 4) === peg$c78) {
4782
- s3 = peg$c78;
5394
+ if (input.substr(peg$currPos, 4) === peg$c83) {
5395
+ s3 = peg$c83;
4783
5396
  peg$currPos += 4;
4784
5397
  } else {
4785
5398
  s3 = null;
4786
- if (peg$silentFails === 0) { peg$fail(peg$c79); }
5399
+ if (peg$silentFails === 0) { peg$fail(peg$c84); }
4787
5400
  }
4788
5401
  if (s3 === null) {
4789
- if (input.substr(peg$currPos, 5) === peg$c80) {
4790
- s3 = peg$c80;
5402
+ if (input.substr(peg$currPos, 5) === peg$c85) {
5403
+ s3 = peg$c85;
4791
5404
  peg$currPos += 5;
4792
5405
  } else {
4793
5406
  s3 = null;
4794
- if (peg$silentFails === 0) { peg$fail(peg$c81); }
5407
+ if (peg$silentFails === 0) { peg$fail(peg$c86); }
4795
5408
  }
4796
5409
  }
4797
5410
  if (s3 !== null) {
4798
5411
  peg$reportedPos = s0;
4799
- s1 = peg$c157(s1, s3);
5412
+ s1 = peg$c162(s1, s3);
4800
5413
  if (s1 === null) {
4801
5414
  peg$currPos = s0;
4802
5415
  s0 = s1;
@@ -4824,11 +5437,11 @@ Emblem.Parser = (function() {
4824
5437
 
4825
5438
  s0 = peg$currPos;
4826
5439
  if (input.charCodeAt(peg$currPos) === 123) {
4827
- s1 = peg$c108;
5440
+ s1 = peg$c113;
4828
5441
  peg$currPos++;
4829
5442
  } else {
4830
5443
  s1 = null;
4831
- if (peg$silentFails === 0) { peg$fail(peg$c109); }
5444
+ if (peg$silentFails === 0) { peg$fail(peg$c114); }
4832
5445
  }
4833
5446
  if (s1 !== null) {
4834
5447
  s2 = peg$parse_();
@@ -4870,15 +5483,15 @@ Emblem.Parser = (function() {
4870
5483
  s4 = peg$parse_();
4871
5484
  if (s4 !== null) {
4872
5485
  if (input.charCodeAt(peg$currPos) === 125) {
4873
- s5 = peg$c125;
5486
+ s5 = peg$c130;
4874
5487
  peg$currPos++;
4875
5488
  } else {
4876
5489
  s5 = null;
4877
- if (peg$silentFails === 0) { peg$fail(peg$c126); }
5490
+ if (peg$silentFails === 0) { peg$fail(peg$c131); }
4878
5491
  }
4879
5492
  if (s5 !== null) {
4880
5493
  peg$reportedPos = s0;
4881
- s1 = peg$c158(s3);
5494
+ s1 = peg$c163(s3);
4882
5495
  if (s1 === null) {
4883
5496
  peg$currPos = s0;
4884
5497
  s0 = s1;
@@ -4945,11 +5558,11 @@ Emblem.Parser = (function() {
4945
5558
  s4 = peg$currPos;
4946
5559
  peg$silentFails++;
4947
5560
  if (input.charCodeAt(peg$currPos) === 33) {
4948
- s5 = peg$c159;
5561
+ s5 = peg$c164;
4949
5562
  peg$currPos++;
4950
5563
  } else {
4951
5564
  s5 = null;
4952
- if (peg$silentFails === 0) { peg$fail(peg$c160); }
5565
+ if (peg$silentFails === 0) { peg$fail(peg$c165); }
4953
5566
  }
4954
5567
  peg$silentFails--;
4955
5568
  if (s5 === null) {
@@ -4960,7 +5573,7 @@ Emblem.Parser = (function() {
4960
5573
  }
4961
5574
  if (s4 !== null) {
4962
5575
  peg$reportedPos = peg$currPos;
4963
- s5 = peg$c161(s1, s3);
5576
+ s5 = peg$c166(s1, s3);
4964
5577
  if (s5) {
4965
5578
  s5 = peg$c1;
4966
5579
  } else {
@@ -4968,7 +5581,7 @@ Emblem.Parser = (function() {
4968
5581
  }
4969
5582
  if (s5 !== null) {
4970
5583
  peg$reportedPos = s0;
4971
- s1 = peg$c162(s1, s3);
5584
+ s1 = peg$c167(s1, s3);
4972
5585
  if (s1 === null) {
4973
5586
  peg$currPos = s0;
4974
5587
  s0 = s1;
@@ -5016,7 +5629,7 @@ Emblem.Parser = (function() {
5016
5629
  s3 = peg$parsepathIdNode();
5017
5630
  if (s3 !== null) {
5018
5631
  peg$reportedPos = s0;
5019
- s1 = peg$c163(s1, s3);
5632
+ s1 = peg$c168(s1, s3);
5020
5633
  if (s1 === null) {
5021
5634
  peg$currPos = s0;
5022
5635
  s0 = s1;
@@ -5056,7 +5669,7 @@ Emblem.Parser = (function() {
5056
5669
  s3 = peg$parseattributeTextNodes();
5057
5670
  if (s3 !== null) {
5058
5671
  peg$reportedPos = s0;
5059
- s1 = peg$c164(s1, s3);
5672
+ s1 = peg$c169(s1, s3);
5060
5673
  if (s1 === null) {
5061
5674
  peg$currPos = s0;
5062
5675
  s0 = s1;
@@ -5102,28 +5715,28 @@ Emblem.Parser = (function() {
5102
5715
 
5103
5716
  s0 = peg$parsealpha();
5104
5717
  if (s0 === null) {
5105
- if (peg$c85.test(input.charAt(peg$currPos))) {
5718
+ if (peg$c90.test(input.charAt(peg$currPos))) {
5106
5719
  s0 = input.charAt(peg$currPos);
5107
5720
  peg$currPos++;
5108
5721
  } else {
5109
5722
  s0 = null;
5110
- if (peg$silentFails === 0) { peg$fail(peg$c86); }
5723
+ if (peg$silentFails === 0) { peg$fail(peg$c91); }
5111
5724
  }
5112
5725
  if (s0 === null) {
5113
5726
  if (input.charCodeAt(peg$currPos) === 95) {
5114
- s0 = peg$c165;
5727
+ s0 = peg$c170;
5115
5728
  peg$currPos++;
5116
5729
  } else {
5117
5730
  s0 = null;
5118
- if (peg$silentFails === 0) { peg$fail(peg$c166); }
5731
+ if (peg$silentFails === 0) { peg$fail(peg$c171); }
5119
5732
  }
5120
5733
  if (s0 === null) {
5121
5734
  if (input.charCodeAt(peg$currPos) === 45) {
5122
- s0 = peg$c83;
5735
+ s0 = peg$c88;
5123
5736
  peg$currPos++;
5124
5737
  } else {
5125
5738
  s0 = null;
5126
- if (peg$silentFails === 0) { peg$fail(peg$c84); }
5739
+ if (peg$silentFails === 0) { peg$fail(peg$c89); }
5127
5740
  }
5128
5741
  }
5129
5742
  }
@@ -5137,11 +5750,11 @@ Emblem.Parser = (function() {
5137
5750
 
5138
5751
  s0 = peg$currPos;
5139
5752
  if (input.charCodeAt(peg$currPos) === 37) {
5140
- s1 = peg$c167;
5753
+ s1 = peg$c172;
5141
5754
  peg$currPos++;
5142
5755
  } else {
5143
5756
  s1 = null;
5144
- if (peg$silentFails === 0) { peg$fail(peg$c168); }
5757
+ if (peg$silentFails === 0) { peg$fail(peg$c173); }
5145
5758
  }
5146
5759
  if (s1 !== null) {
5147
5760
  s2 = peg$parsecssIdentifier();
@@ -5171,17 +5784,17 @@ Emblem.Parser = (function() {
5171
5784
 
5172
5785
  s0 = peg$currPos;
5173
5786
  if (input.charCodeAt(peg$currPos) === 35) {
5174
- s1 = peg$c169;
5787
+ s1 = peg$c174;
5175
5788
  peg$currPos++;
5176
5789
  } else {
5177
5790
  s1 = null;
5178
- if (peg$silentFails === 0) { peg$fail(peg$c170); }
5791
+ if (peg$silentFails === 0) { peg$fail(peg$c175); }
5179
5792
  }
5180
5793
  if (s1 !== null) {
5181
5794
  s2 = peg$parsecssIdentifier();
5182
5795
  if (s2 !== null) {
5183
5796
  peg$reportedPos = s0;
5184
- s1 = peg$c171(s2);
5797
+ s1 = peg$c176(s2);
5185
5798
  if (s1 === null) {
5186
5799
  peg$currPos = s0;
5187
5800
  s0 = s1;
@@ -5205,11 +5818,11 @@ Emblem.Parser = (function() {
5205
5818
 
5206
5819
  s0 = peg$currPos;
5207
5820
  if (input.charCodeAt(peg$currPos) === 46) {
5208
- s1 = peg$c51;
5821
+ s1 = peg$c59;
5209
5822
  peg$currPos++;
5210
5823
  } else {
5211
5824
  s1 = null;
5212
- if (peg$silentFails === 0) { peg$fail(peg$c52); }
5825
+ if (peg$silentFails === 0) { peg$fail(peg$c60); }
5213
5826
  }
5214
5827
  if (s1 !== null) {
5215
5828
  s2 = peg$parsecssIdentifier();
@@ -5242,7 +5855,7 @@ Emblem.Parser = (function() {
5242
5855
  peg$silentFails--;
5243
5856
  if (s0 === null) {
5244
5857
  s1 = null;
5245
- if (peg$silentFails === 0) { peg$fail(peg$c172); }
5858
+ if (peg$silentFails === 0) { peg$fail(peg$c177); }
5246
5859
  }
5247
5860
 
5248
5861
  return s0;
@@ -5273,12 +5886,12 @@ Emblem.Parser = (function() {
5273
5886
  function peg$parsenmchar() {
5274
5887
  var s0;
5275
5888
 
5276
- if (peg$c173.test(input.charAt(peg$currPos))) {
5889
+ if (peg$c178.test(input.charAt(peg$currPos))) {
5277
5890
  s0 = input.charAt(peg$currPos);
5278
5891
  peg$currPos++;
5279
5892
  } else {
5280
5893
  s0 = null;
5281
- if (peg$silentFails === 0) { peg$fail(peg$c174); }
5894
+ if (peg$silentFails === 0) { peg$fail(peg$c179); }
5282
5895
  }
5283
5896
  if (s0 === null) {
5284
5897
  s0 = peg$parsenonascii();
@@ -5290,12 +5903,12 @@ Emblem.Parser = (function() {
5290
5903
  function peg$parsenmstart() {
5291
5904
  var s0;
5292
5905
 
5293
- if (peg$c175.test(input.charAt(peg$currPos))) {
5906
+ if (peg$c180.test(input.charAt(peg$currPos))) {
5294
5907
  s0 = input.charAt(peg$currPos);
5295
5908
  peg$currPos++;
5296
5909
  } else {
5297
5910
  s0 = null;
5298
- if (peg$silentFails === 0) { peg$fail(peg$c176); }
5911
+ if (peg$silentFails === 0) { peg$fail(peg$c181); }
5299
5912
  }
5300
5913
  if (s0 === null) {
5301
5914
  s0 = peg$parsenonascii();
@@ -5307,12 +5920,12 @@ Emblem.Parser = (function() {
5307
5920
  function peg$parsenonascii() {
5308
5921
  var s0;
5309
5922
 
5310
- if (peg$c177.test(input.charAt(peg$currPos))) {
5923
+ if (peg$c182.test(input.charAt(peg$currPos))) {
5311
5924
  s0 = input.charAt(peg$currPos);
5312
5925
  peg$currPos++;
5313
5926
  } else {
5314
5927
  s0 = null;
5315
- if (peg$silentFails === 0) { peg$fail(peg$c178); }
5928
+ if (peg$silentFails === 0) { peg$fail(peg$c183); }
5316
5929
  }
5317
5930
 
5318
5931
  return s0;
@@ -5346,11 +5959,11 @@ Emblem.Parser = (function() {
5346
5959
  peg$silentFails++;
5347
5960
  s0 = peg$currPos;
5348
5961
  if (input.charCodeAt(peg$currPos) === 37) {
5349
- s1 = peg$c167;
5962
+ s1 = peg$c172;
5350
5963
  peg$currPos++;
5351
5964
  } else {
5352
5965
  s1 = null;
5353
- if (peg$silentFails === 0) { peg$fail(peg$c168); }
5966
+ if (peg$silentFails === 0) { peg$fail(peg$c173); }
5354
5967
  }
5355
5968
  if (s1 !== null) {
5356
5969
  s2 = peg$parse_();
@@ -5358,7 +5971,7 @@ Emblem.Parser = (function() {
5358
5971
  s3 = peg$parsetagString();
5359
5972
  if (s3 !== null) {
5360
5973
  peg$reportedPos = s0;
5361
- s1 = peg$c55(s3);
5974
+ s1 = peg$c63(s3);
5362
5975
  if (s1 === null) {
5363
5976
  peg$currPos = s0;
5364
5977
  s0 = s1;
@@ -5383,7 +5996,7 @@ Emblem.Parser = (function() {
5383
5996
  peg$silentFails--;
5384
5997
  if (s0 === null) {
5385
5998
  s1 = null;
5386
- if (peg$silentFails === 0) { peg$fail(peg$c179); }
5999
+ if (peg$silentFails === 0) { peg$fail(peg$c184); }
5387
6000
  }
5388
6001
 
5389
6002
  return s0;
@@ -5396,7 +6009,7 @@ Emblem.Parser = (function() {
5396
6009
  s1 = peg$parsetagString();
5397
6010
  if (s1 !== null) {
5398
6011
  peg$reportedPos = peg$currPos;
5399
- s2 = peg$c180(s1);
6012
+ s2 = peg$c185(s1);
5400
6013
  if (s2) {
5401
6014
  s2 = peg$c1;
5402
6015
  } else {
@@ -5404,7 +6017,7 @@ Emblem.Parser = (function() {
5404
6017
  }
5405
6018
  if (s2 !== null) {
5406
6019
  peg$reportedPos = s0;
5407
- s1 = peg$c181(s1);
6020
+ s1 = peg$c186(s1);
5408
6021
  if (s1 === null) {
5409
6022
  peg$currPos = s0;
5410
6023
  s0 = s1;
@@ -5426,12 +6039,12 @@ Emblem.Parser = (function() {
5426
6039
  function peg$parsetagChar() {
5427
6040
  var s0;
5428
6041
 
5429
- if (peg$c173.test(input.charAt(peg$currPos))) {
6042
+ if (peg$c178.test(input.charAt(peg$currPos))) {
5430
6043
  s0 = input.charAt(peg$currPos);
5431
6044
  peg$currPos++;
5432
6045
  } else {
5433
6046
  s0 = null;
5434
- if (peg$silentFails === 0) { peg$fail(peg$c174); }
6047
+ if (peg$silentFails === 0) { peg$fail(peg$c179); }
5435
6048
  }
5436
6049
  if (s0 === null) {
5437
6050
  s0 = peg$parsenonSeparatorColon();
@@ -5445,11 +6058,11 @@ Emblem.Parser = (function() {
5445
6058
 
5446
6059
  s0 = peg$currPos;
5447
6060
  if (input.charCodeAt(peg$currPos) === 58) {
5448
- s1 = peg$c64;
6061
+ s1 = peg$c68;
5449
6062
  peg$currPos++;
5450
6063
  } else {
5451
6064
  s1 = null;
5452
- if (peg$silentFails === 0) { peg$fail(peg$c65); }
6065
+ if (peg$silentFails === 0) { peg$fail(peg$c69); }
5453
6066
  }
5454
6067
  if (s1 !== null) {
5455
6068
  s2 = peg$currPos;
@@ -5497,7 +6110,7 @@ Emblem.Parser = (function() {
5497
6110
  s1 = peg$parsetagString();
5498
6111
  if (s1 !== null) {
5499
6112
  peg$reportedPos = peg$currPos;
5500
- s2 = peg$c183(s1);
6113
+ s2 = peg$c188(s1);
5501
6114
  if (s2) {
5502
6115
  s2 = peg$c1;
5503
6116
  } else {
@@ -5505,7 +6118,7 @@ Emblem.Parser = (function() {
5505
6118
  }
5506
6119
  if (s2 !== null) {
5507
6120
  peg$reportedPos = s0;
5508
- s1 = peg$c181(s1);
6121
+ s1 = peg$c186(s1);
5509
6122
  if (s1 === null) {
5510
6123
  peg$currPos = s0;
5511
6124
  s0 = s1;
@@ -5523,7 +6136,7 @@ Emblem.Parser = (function() {
5523
6136
  peg$silentFails--;
5524
6137
  if (s0 === null) {
5525
6138
  s1 = null;
5526
- if (peg$silentFails === 0) { peg$fail(peg$c182); }
6139
+ if (peg$silentFails === 0) { peg$fail(peg$c187); }
5527
6140
  }
5528
6141
 
5529
6142
  return s0;
@@ -5538,7 +6151,7 @@ Emblem.Parser = (function() {
5538
6151
  s2 = peg$parse__();
5539
6152
  if (s2 !== null) {
5540
6153
  peg$reportedPos = s0;
5541
- s1 = peg$c55(s2);
6154
+ s1 = peg$c63(s2);
5542
6155
  if (s1 === null) {
5543
6156
  peg$currPos = s0;
5544
6157
  s0 = s1;
@@ -5563,15 +6176,15 @@ Emblem.Parser = (function() {
5563
6176
  peg$silentFails++;
5564
6177
  s0 = peg$currPos;
5565
6178
  if (input.charCodeAt(peg$currPos) === 61423) {
5566
- s1 = peg$c185;
6179
+ s1 = peg$c190;
5567
6180
  peg$currPos++;
5568
6181
  } else {
5569
6182
  s1 = null;
5570
- if (peg$silentFails === 0) { peg$fail(peg$c186); }
6183
+ if (peg$silentFails === 0) { peg$fail(peg$c191); }
5571
6184
  }
5572
6185
  if (s1 !== null) {
5573
6186
  peg$reportedPos = s0;
5574
- s1 = peg$c187();
6187
+ s1 = peg$c192();
5575
6188
  }
5576
6189
  if (s1 === null) {
5577
6190
  peg$currPos = s0;
@@ -5582,7 +6195,7 @@ Emblem.Parser = (function() {
5582
6195
  peg$silentFails--;
5583
6196
  if (s0 === null) {
5584
6197
  s1 = null;
5585
- if (peg$silentFails === 0) { peg$fail(peg$c184); }
6198
+ if (peg$silentFails === 0) { peg$fail(peg$c189); }
5586
6199
  }
5587
6200
 
5588
6201
  return s0;
@@ -5594,15 +6207,15 @@ Emblem.Parser = (function() {
5594
6207
  peg$silentFails++;
5595
6208
  s0 = peg$currPos;
5596
6209
  if (input.charCodeAt(peg$currPos) === 61438) {
5597
- s1 = peg$c189;
6210
+ s1 = peg$c194;
5598
6211
  peg$currPos++;
5599
6212
  } else {
5600
6213
  s1 = null;
5601
- if (peg$silentFails === 0) { peg$fail(peg$c190); }
6214
+ if (peg$silentFails === 0) { peg$fail(peg$c195); }
5602
6215
  }
5603
6216
  if (s1 !== null) {
5604
6217
  peg$reportedPos = s0;
5605
- s1 = peg$c187();
6218
+ s1 = peg$c192();
5606
6219
  }
5607
6220
  if (s1 === null) {
5608
6221
  peg$currPos = s0;
@@ -5613,7 +6226,7 @@ Emblem.Parser = (function() {
5613
6226
  peg$silentFails--;
5614
6227
  if (s0 === null) {
5615
6228
  s1 = null;
5616
- if (peg$silentFails === 0) { peg$fail(peg$c188); }
6229
+ if (peg$silentFails === 0) { peg$fail(peg$c193); }
5617
6230
  }
5618
6231
 
5619
6232
  return s0;
@@ -5625,15 +6238,15 @@ Emblem.Parser = (function() {
5625
6238
  peg$silentFails++;
5626
6239
  s0 = peg$currPos;
5627
6240
  if (input.charCodeAt(peg$currPos) === 61422) {
5628
- s1 = peg$c192;
6241
+ s1 = peg$c197;
5629
6242
  peg$currPos++;
5630
6243
  } else {
5631
6244
  s1 = null;
5632
- if (peg$silentFails === 0) { peg$fail(peg$c193); }
6245
+ if (peg$silentFails === 0) { peg$fail(peg$c198); }
5633
6246
  }
5634
6247
  if (s1 !== null) {
5635
6248
  peg$reportedPos = s0;
5636
- s1 = peg$c187();
6249
+ s1 = peg$c192();
5637
6250
  }
5638
6251
  if (s1 === null) {
5639
6252
  peg$currPos = s0;
@@ -5644,7 +6257,7 @@ Emblem.Parser = (function() {
5644
6257
  peg$silentFails--;
5645
6258
  if (s0 === null) {
5646
6259
  s1 = null;
5647
- if (peg$silentFails === 0) { peg$fail(peg$c191); }
6260
+ if (peg$silentFails === 0) { peg$fail(peg$c196); }
5648
6261
  }
5649
6262
 
5650
6263
  return s0;
@@ -5656,34 +6269,34 @@ Emblem.Parser = (function() {
5656
6269
  peg$silentFails++;
5657
6270
  s0 = peg$currPos;
5658
6271
  if (input.charCodeAt(peg$currPos) === 13) {
5659
- s1 = peg$c195;
6272
+ s1 = peg$c200;
5660
6273
  peg$currPos++;
5661
6274
  } else {
5662
6275
  s1 = null;
5663
- if (peg$silentFails === 0) { peg$fail(peg$c196); }
6276
+ if (peg$silentFails === 0) { peg$fail(peg$c201); }
5664
6277
  }
5665
6278
  if (s1 === null) {
5666
6279
  s1 = peg$c1;
5667
6280
  }
5668
6281
  if (s1 !== null) {
5669
6282
  if (input.charCodeAt(peg$currPos) === 61439) {
5670
- s2 = peg$c197;
6283
+ s2 = peg$c202;
5671
6284
  peg$currPos++;
5672
6285
  } else {
5673
6286
  s2 = null;
5674
- if (peg$silentFails === 0) { peg$fail(peg$c198); }
6287
+ if (peg$silentFails === 0) { peg$fail(peg$c203); }
5675
6288
  }
5676
6289
  if (s2 !== null) {
5677
6290
  if (input.charCodeAt(peg$currPos) === 10) {
5678
- s3 = peg$c199;
6291
+ s3 = peg$c204;
5679
6292
  peg$currPos++;
5680
6293
  } else {
5681
6294
  s3 = null;
5682
- if (peg$silentFails === 0) { peg$fail(peg$c200); }
6295
+ if (peg$silentFails === 0) { peg$fail(peg$c205); }
5683
6296
  }
5684
6297
  if (s3 !== null) {
5685
6298
  peg$reportedPos = s0;
5686
- s1 = peg$c145();
6299
+ s1 = peg$c150();
5687
6300
  if (s1 === null) {
5688
6301
  peg$currPos = s0;
5689
6302
  s0 = s1;
@@ -5705,7 +6318,7 @@ Emblem.Parser = (function() {
5705
6318
  peg$silentFails--;
5706
6319
  if (s0 === null) {
5707
6320
  s1 = null;
5708
- if (peg$silentFails === 0) { peg$fail(peg$c194); }
6321
+ if (peg$silentFails === 0) { peg$fail(peg$c199); }
5709
6322
  }
5710
6323
 
5711
6324
  return s0;
@@ -5722,7 +6335,7 @@ Emblem.Parser = (function() {
5722
6335
  peg$silentFails--;
5723
6336
  if (s0 === null) {
5724
6337
  s1 = null;
5725
- if (peg$silentFails === 0) { peg$fail(peg$c201); }
6338
+ if (peg$silentFails === 0) { peg$fail(peg$c206); }
5726
6339
  }
5727
6340
 
5728
6341
  return s0;
@@ -5750,7 +6363,7 @@ Emblem.Parser = (function() {
5750
6363
  peg$silentFails--;
5751
6364
  if (s0 === null) {
5752
6365
  s1 = null;
5753
- if (peg$silentFails === 0) { peg$fail(peg$c202); }
6366
+ if (peg$silentFails === 0) { peg$fail(peg$c207); }
5754
6367
  }
5755
6368
 
5756
6369
  return s0;
@@ -5769,7 +6382,7 @@ Emblem.Parser = (function() {
5769
6382
  peg$silentFails--;
5770
6383
  if (s0 === null) {
5771
6384
  s1 = null;
5772
- if (peg$silentFails === 0) { peg$fail(peg$c203); }
6385
+ if (peg$silentFails === 0) { peg$fail(peg$c208); }
5773
6386
  }
5774
6387
 
5775
6388
  return s0;
@@ -5779,17 +6392,17 @@ Emblem.Parser = (function() {
5779
6392
  var s0, s1;
5780
6393
 
5781
6394
  peg$silentFails++;
5782
- if (peg$c205.test(input.charAt(peg$currPos))) {
6395
+ if (peg$c210.test(input.charAt(peg$currPos))) {
5783
6396
  s0 = input.charAt(peg$currPos);
5784
6397
  peg$currPos++;
5785
6398
  } else {
5786
6399
  s0 = null;
5787
- if (peg$silentFails === 0) { peg$fail(peg$c206); }
6400
+ if (peg$silentFails === 0) { peg$fail(peg$c211); }
5788
6401
  }
5789
6402
  peg$silentFails--;
5790
6403
  if (s0 === null) {
5791
6404
  s1 = null;
5792
- if (peg$silentFails === 0) { peg$fail(peg$c204); }
6405
+ if (peg$silentFails === 0) { peg$fail(peg$c209); }
5793
6406
  }
5794
6407
 
5795
6408
  return s0;
@@ -5821,7 +6434,7 @@ Emblem.Parser = (function() {
5821
6434
  peg$currPos++;
5822
6435
  } else {
5823
6436
  s2 = null;
5824
- if (peg$silentFails === 0) { peg$fail(peg$c116); }
6437
+ if (peg$silentFails === 0) { peg$fail(peg$c121); }
5825
6438
  }
5826
6439
  if (s2 !== null) {
5827
6440
  peg$reportedPos = s0;
@@ -5885,7 +6498,6 @@ Emblem.Parser = (function() {
5885
6498
  track: true,
5886
6499
  wbr: true
5887
6500
  };
5888
-
5889
6501
  var KNOWN_TAGS = {
5890
6502
  figcaption: true, blockquote: true, plaintext: true, textarea: true, progress: true,
5891
6503
  optgroup: true, noscript: true, noframes: true, frameset: true, fieldset: true,
@@ -5983,6 +6595,138 @@ Emblem.Parser = (function() {
5983
6595
  function log(msg) {
5984
6596
  handlebarsVariant.log(9, msg);
5985
6597
  }
6598
+ function parseSexpr(path, params, hash){
6599
+ var actualParams = [];
6600
+ var attrs = {};
6601
+ var hasAttrs = false;
6602
+
6603
+ // Convert shorthand html attributes (e.g. % = tagName, . = class, etc)
6604
+ for(var i = 0; i < params.length; ++i) {
6605
+ var p = params[i];
6606
+ var attrKey = p[0];
6607
+ if(attrKey == 'tagName' || attrKey == 'elementId' || attrKey == 'class') {
6608
+ hasAttrs = true;
6609
+ attrs[attrKey] = attrs[attrKey] || [];
6610
+ attrs[attrKey].push(p[1]);
6611
+ } else {
6612
+ actualParams.push(p);
6613
+ }
6614
+ }
6615
+
6616
+ if(hasAttrs) {
6617
+ hash = hash || new AST.HashNode([]);
6618
+ for(var k in attrs) {
6619
+ if(!attrs.hasOwnProperty(k)) continue;
6620
+ hash.pairs.push([k, new AST.StringNode(attrs[k].join(' '))]);
6621
+ }
6622
+ }
6623
+
6624
+ actualParams.unshift(path);
6625
+
6626
+ if (useSexprNodes) {
6627
+ return new AST.SexprNode(actualParams, hash);
6628
+ } else {
6629
+ // Stub a sexpr-like node for backwards compatibility with pre-1.3 AST.
6630
+ return {
6631
+ id: actualParams[0],
6632
+ params: actualParams.slice(1),
6633
+ hash: hash
6634
+ };
6635
+ }
6636
+ }
6637
+ function parseInHtml(h, inTagMustaches, fullAttributes) {
6638
+
6639
+ var tagName = h[0] || 'div',
6640
+ shorthandAttributes = h[1] || [],
6641
+ id = shorthandAttributes[0],
6642
+ classes = shorthandAttributes[1] || [],
6643
+ tagOpenContent = [],
6644
+ updateMustacheNode;
6645
+
6646
+ updateMustacheNode = function (node) {
6647
+ var pairs, pair, stringNode, original;
6648
+ if (!classes.length) {
6649
+ return;
6650
+ }
6651
+ if (!node.id || node.id.string !== 'bind-attr') {
6652
+ return;
6653
+ }
6654
+ if (node.hash && node.hash.pairs && (pairs = node.hash.pairs)) {
6655
+ for (var i2 in pairs) {
6656
+ if (!pairs.hasOwnProperty(i2)) { continue; }
6657
+ pair = pairs[i2];
6658
+ if (pair && pair[0] === 'class' && pair[1] instanceof AST.StringNode) {
6659
+ stringNode = pair[1];
6660
+ original = stringNode.original;
6661
+ stringNode.original = stringNode.string = stringNode.stringModeValue = ':' + classes.join(' :') + ' ' + original;
6662
+ classes = [];
6663
+ }
6664
+ }
6665
+ }
6666
+ };
6667
+
6668
+ tagOpenContent.push(new AST.ContentNode('<' + tagName));
6669
+
6670
+ if(id) {
6671
+ tagOpenContent.push(new AST.ContentNode(' id="' + id + '"'));
6672
+ }
6673
+
6674
+ // Pad in tag mustaches with spaces.
6675
+ for(var i = 0; i < inTagMustaches.length; ++i) {
6676
+ // Check if given mustache node has class bindings and prepend shorthand classes
6677
+ updateMustacheNode(inTagMustaches[i]);
6678
+ tagOpenContent.push(new AST.ContentNode(' '));
6679
+ tagOpenContent.push(inTagMustaches[i]);
6680
+ }
6681
+ for(var i = 0; i < fullAttributes.length; ++i) {
6682
+ for (var i2 in fullAttributes[i]) {
6683
+ if (fullAttributes[i][i2] instanceof AST.MustacheNode) {
6684
+ updateMustacheNode(fullAttributes[i][i2]);
6685
+ }
6686
+ }
6687
+ if (classes.length) {
6688
+ var isClassAttr = fullAttributes[i][1] && fullAttributes[i][1].string === 'class="';
6689
+
6690
+ // Check if attribute is class attribute and has content
6691
+ if (isClassAttr && fullAttributes[i].length === 4) {
6692
+ if (fullAttributes[i][2].type == 'mustache') {
6693
+ var mustacheNode, classesContent, hash, params;
6694
+ // If class was mustache binding, transform attribute into bind-attr MustacheNode
6695
+ // In case of 'div.shorthand class=varBinding' will transform into '<div {{bind-attr class=":shorthand varBinding"}}'
6696
+ mustacheNode = fullAttributes[i][2];
6697
+ classesContent = ':' + classes.join(' :') + ' ' + mustacheNode.id.original;
6698
+ hash = new AST.HashNode([
6699
+ ['class', new AST.StringNode(classesContent)]
6700
+ ]);
6701
+
6702
+ params = [new AST.IdNode([{ part: 'bind-attr'}])].concat(mustacheNode.params);
6703
+ fullAttributes[i] = [fullAttributes[i][0], createMustacheNode(params, hash, true)];
6704
+ } else {
6705
+ // Else prepend shorthand classes to attribute
6706
+ classes.push(fullAttributes[i][2].string);
6707
+ fullAttributes[i][2].string = classes.join(' ');
6708
+ }
6709
+ classes = [];
6710
+ }
6711
+ }
6712
+
6713
+ tagOpenContent = tagOpenContent.concat(fullAttributes[i]);
6714
+ }
6715
+
6716
+ if(classes && classes.length) {
6717
+ tagOpenContent.push(new AST.ContentNode(' class="' + classes.join(' ') + '"'));
6718
+ }
6719
+ var closingTagSlashPresent = !!h[2];
6720
+ if(SELF_CLOSING_TAG[tagName] || closingTagSlashPresent) {
6721
+ tagOpenContent.push(new AST.ContentNode(' />'));
6722
+ return [tagOpenContent];
6723
+ } else {
6724
+
6725
+ tagOpenContent.push(new AST.ContentNode('>'));
6726
+
6727
+ return [tagOpenContent, new AST.ContentNode('</' + tagName + '>')];
6728
+ }
6729
+ }
5986
6730
 
5987
6731
 
5988
6732
  peg$result = peg$startRuleFunction();