summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/compiler/helpers.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2015-08-14 15:18:52 -0500
committerkpdecker <kpdecker@gmail.com>2015-08-22 10:59:08 -0700
commit91ffd32cad32b2d1cd310ff94f65b28c428206ac (patch)
tree13cb346dfb0e6dc72dc6dddbcdf3ed8e61ebaeff /lib/handlebars/compiler/helpers.js
parent2571dd8e8e43fd320672763564b16a5b3ae33966 (diff)
downloadhandlebars.js-91ffd32cad32b2d1cd310ff94f65b28c428206ac.zip
handlebars.js-91ffd32cad32b2d1cd310ff94f65b28c428206ac.tar.gz
handlebars.js-91ffd32cad32b2d1cd310ff94f65b28c428206ac.tar.bz2
Implement partial blocks
This allows for failover for missing partials as well as limited templating ability through the `{{> @partial-block }}` partial special case. Partial fix for #1018
Diffstat (limited to 'lib/handlebars/compiler/helpers.js')
-rw-r--r--lib/handlebars/compiler/helpers.js19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/handlebars/compiler/helpers.js b/lib/handlebars/compiler/helpers.js
index bf72034..e04f4dd 100644
--- a/lib/handlebars/compiler/helpers.js
+++ b/lib/handlebars/compiler/helpers.js
@@ -185,3 +185,22 @@ export function prepareProgram(statements, loc) {
}
+export function preparePartialBlock(openPartialBlock, program, close, locInfo) {
+ if (openPartialBlock.name.original !== close.path.original) {
+ let errorNode = {loc: openPartialBlock.name.loc};
+
+ throw new Exception(openPartialBlock.name.original + " doesn't match " + close.path.original, errorNode);
+ }
+
+ return {
+ type: 'PartialBlockStatement',
+ path: openPartialBlock.name,
+ params: openPartialBlock.params,
+ hash: openPartialBlock.hash,
+ program,
+ openStrip: openPartialBlock.strip,
+ closeStrip: close && close.strip,
+ loc: this.locInfo(locInfo)
+ };
+}
+