[@types/nunjucks] Fix types for functions in Environment (#40026)

* [@types/nunjucks] Fix function signiatures in Environment

* [@types/nunjucks] Add tests for improved Environment function signiatures
This commit is contained in:
Matt Burstein
2019-11-05 13:20:37 -08:00
committed by Nathan Shively-Sanders
parent 62ef71cd97
commit 1cb82bdd9f
2 changed files with 23 additions and 11 deletions
+7 -5
View File
@@ -1,6 +1,7 @@
// Type definitions for nunjucks 3.1
// Project: http://mozilla.github.io/nunjucks/, https://github.com/mozilla/nunjucks
// Definitions by: Ruben Slabbert <https://github.com/RubenSlabbert>
// Matthew Burstein <https://github.com/MatthewBurstein>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
@@ -74,15 +75,16 @@ export class Environment {
renderString(name: string, context: object): string;
renderString(name: string, context: object, callback?: TemplateCallback<string>): void;
addFilter(name: string, func: (...args: any[]) => any, async?: boolean): void;
getFilter(name: string): void;
addFilter(name: string, func: (...args: any[]) => any, async?: boolean): Environment;
getFilter(name: string): (...args: any[]) => any;
addExtension(name: string, ext: Extension): void;
addExtension(name: string, ext: Extension): Environment;
removeExtension(name: string): void;
getExtension(name: string): Extension;
hasExtension(name: string): void;
hasExtension(name: string): boolean;
addGlobal(name: string, value: any): void;
addGlobal(name: string, value: any): Environment;
getGlobal(name: string): any;
getTemplate(name: string, eagerCompile?: boolean): Template;
getTemplate(name: string, eagerCompile?: boolean, callback?: Callback<Error, Template>): void;
+16 -6
View File
@@ -35,12 +35,22 @@ nunjucks.configure('views', {
});
rendered = env.renderString(src, ctx);
env.addExtension("SpawnGlitter", {
tags: ["glitter", "star wars", "Age of Empires"],
parse(parser, nodes, lexer) {
return "The parser api is complicated";
}
});
let extension: nunjucks.Extension = {
tags: ["glitter", "star wars", "Age of Empires"],
parse(parser, nodes, lexer) {
return "The parser api is complicated";
}
};
env = env.addExtension("SpawnGlitter", extension);
const hasExtension: boolean = env.hasExtension('SpawnGlitter');
extension = env.getExtension('SpawnGlitter');
env.removeExtension('SpawnGlitter');
env = env.addGlobal('key', 'value');
const value = env.getGlobal('key');
env = env.addFilter('testFilter', arg => arg, false);
const testFilter: ((arg: any) => any) = env.getFilter('testFilter');
nunjucks.installJinjaCompat();