From 98ce166ae555612942c23c0579b3569fd9d92518 Mon Sep 17 00:00:00 2001 From: akdubya Date: Wed, 26 Jan 2011 03:06:58 -0500 Subject: [PATCH] experimental pragma support {%esc:j}{foo}{/esc} --- lib/compiler.js | 57 +++++++++++++++++++++++++++++++++++++++++-------- lib/dust.js | 27 +++++++++-------------- src/dust.pegjs | 4 ++-- 3 files changed, 60 insertions(+), 28 deletions(-) diff --git a/lib/compiler.js b/lib/compiler.js index 7f187a2..9eaef40 100644 --- a/lib/compiler.js +++ b/lib/compiler.js @@ -26,6 +26,7 @@ dust.optimizers = { "<": visit, "+": visit, "@": visit, + "%": visit, partial: visit, context: visit, params: visit, @@ -38,6 +39,17 @@ dust.optimizers = { comment: nullify } +dust.pragmas = { + esc: function(compiler, context, bodies, params) { + var old = compiler.auto; + if (!context) context = 'h'; + compiler.auto = (context === 's') ? '' : context; + var out = compileParts(compiler, bodies.block); + compiler.auto = old; + return out; + } +} + function visit(context, node) { var out = [node[0]]; for (var i=1, len=node.length; i<+%:@/~] (!rd !eol .)+ rd + = ld [#?^><+%:@/~%] (!rd !eol .)+ rd / reference ld