diff --git a/Gruntfile.js b/Gruntfile.js index fad1be391..7e028a052 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,15 +5,15 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), eslint: { - options: { - }, files: [ '*.js', 'bench/**/*.js', 'tasks/**/*.js', 'lib/**/!(*.min|parser).js', 'spec/**/!(*.amd|json2|require).js', - 'integration-testing/**/*.js' + 'integration-testing/multi-nodejs-test/*.js', + 'integration-testing/webpack-test/*.js', + 'integration-testing/webpack-test/src/*.js' ] }, diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js index 3884e88c8..a73ebd280 100644 --- a/lib/handlebars/runtime.js +++ b/lib/handlebars/runtime.js @@ -209,6 +209,9 @@ export function wrapProgram(container, i, fn, data, declaredBlockParams, blockPa return prog; } +/** + * This is currently part of the official API, therefore implementation details should not be changed. + */ export function resolvePartial(partial, context, options) { if (!partial) { if (options.name === '@partial-block') { diff --git a/types/index.d.ts b/types/index.d.ts index d075e234a..a142119a4 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -7,6 +7,8 @@ * - Raanan Weber * - Sergei Dorogin * - webbiesdk + * - Andrew Leedham + * - Nils Knappmeier * For full history prior to their migration to handlebars.js, please see: * https://github.com/DefinitelyTyped/DefinitelyTyped/commits/1ce60bdc07f10e0b076778c6c953271c072bc894/types/handlebars/index.d.ts */ @@ -147,6 +149,22 @@ declare namespace Handlebars { NullLiteral(): void; Hash(hash: hbs.AST.Hash): void; } + + + export interface ResolvePartialOptions { + name: string; + helpers?: { [name: string]: Function }; + partials?: { [name: string]: HandlebarsTemplateDelegate }; + decorators?: { [name: string]: Function }; + data?: any; + } + + export namespace VM { + /** + * @deprecated + */ + export function resolvePartial(partial: HandlebarsTemplateDelegate | undefined, context: any, options: ResolvePartialOptions): HandlebarsTemplateDelegate; + } } /** @@ -223,6 +241,8 @@ interface Logger { log(level: number, obj: string): void; } +type CompilerInfo = [number/* revision */, string /* versions */]; + declare namespace hbs { namespace AST { interface Node { diff --git a/types/test.ts b/types/test.ts index f242f55bc..341a3c2f9 100644 --- a/types/test.ts +++ b/types/test.ts @@ -90,6 +90,16 @@ const parsedTmpl = Handlebars.parse('

Hello, my name is {{name}}.

', { const parsedTmplWithoutOptions = Handlebars.parse('

Hello, my name is {{name}}.

'); +// Custom partial resolution. +const originalResolvePartial = Handlebars.VM.resolvePartial; +Handlebars.VM.resolvePartial = (partial: HandlebarsTemplateDelegate | undefined, context: any, options: Handlebars.ResolvePartialOptions): HandlebarsTemplateDelegate => { + const name = options.name.replace(/my/,'your'); + // transform name. + options.name = name; + return originalResolvePartial(partial, context, options); +} + + // #1544, allow custom helpers in knownHelpers Handlebars.compile('test', { knownHelpers: {