aboutsummaryrefslogtreecommitdiff
path: root/lib/decl/handlebars/handlebars.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/decl/handlebars/handlebars.d.ts')
-rw-r--r--lib/decl/handlebars/handlebars.d.ts227
1 files changed, 227 insertions, 0 deletions
diff --git a/lib/decl/handlebars/handlebars.d.ts b/lib/decl/handlebars/handlebars.d.ts
new file mode 100644
index 000000000..54dc7e9ae
--- /dev/null
+++ b/lib/decl/handlebars/handlebars.d.ts
@@ -0,0 +1,227 @@
+// Type definitions for Handlebars v3.0.3
+// Project: http://handlebarsjs.com/
+// Definitions by: Boris Yankov <https://github.com/borisyankov/>
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+
+declare module Handlebars {
+ export function registerHelper(name: string, fn: Function, inverse?: boolean): void;
+ export function registerPartial(name: string, str: any): void;
+ export function unregisterHelper(name: string): void;
+ export function unregisterPartial(name: string): void;
+ export function K(): void;
+ export function createFrame(object: any): any;
+ export function Exception(message: string): void;
+ export function log(level: number, obj: any): void;
+ export function parse(input: string): hbs.AST.Program;
+ export function compile(input: any, options?: any): HandlebarsTemplateDelegate;
+
+ export var SafeString: typeof hbs.SafeString;
+ export var Utils: typeof hbs.Utils;
+ export var logger: Logger;
+ export var templates: HandlebarsTemplates;
+ export var helpers: any;
+
+ export module AST {
+ export var helpers: hbs.AST.helpers;
+ }
+
+ interface ICompiler {
+ accept(node: hbs.AST.Node): void;
+ Program(program: hbs.AST.Program): void;
+ BlockStatement(block: hbs.AST.BlockStatement): void;
+ PartialStatement(partial: hbs.AST.PartialStatement): void;
+ MustacheStatement(mustache: hbs.AST.MustacheStatement): void;
+ ContentStatement(content: hbs.AST.ContentStatement): void;
+ CommentStatement(comment?: hbs.AST.CommentStatement): void;
+ SubExpression(sexpr: hbs.AST.SubExpression): void;
+ PathExpression(path: hbs.AST.PathExpression): void;
+ StringLiteral(str: hbs.AST.StringLiteral): void;
+ NumberLiteral(num: hbs.AST.NumberLiteral): void;
+ BooleanLiteral(bool: hbs.AST.BooleanLiteral): void;
+ UndefinedLiteral(): void;
+ NullLiteral(): void;
+ Hash(hash: hbs.AST.Hash): void;
+ }
+
+ export class Visitor implements ICompiler {
+ accept(node: hbs.AST.Node): void;
+ acceptKey(node: hbs.AST.Node, name: string): void;
+ acceptArray(arr: hbs.AST.Expression[]): void;
+ Program(program: hbs.AST.Program): void;
+ BlockStatement(block: hbs.AST.BlockStatement): void;
+ PartialStatement(partial: hbs.AST.PartialStatement): void;
+ MustacheStatement(mustache: hbs.AST.MustacheStatement): void;
+ ContentStatement(content: hbs.AST.ContentStatement): void;
+ CommentStatement(comment?: hbs.AST.CommentStatement): void;
+ SubExpression(sexpr: hbs.AST.SubExpression): void;
+ PathExpression(path: hbs.AST.PathExpression): void;
+ StringLiteral(str: hbs.AST.StringLiteral): void;
+ NumberLiteral(num: hbs.AST.NumberLiteral): void;
+ BooleanLiteral(bool: hbs.AST.BooleanLiteral): void;
+ UndefinedLiteral(): void;
+ NullLiteral(): void;
+ Hash(hash: hbs.AST.Hash): void;
+ }
+}
+
+/**
+* Implement this interface on your MVW/MVVM/MVC views such as Backbone.View
+**/
+interface HandlebarsTemplatable {
+ template: HandlebarsTemplateDelegate;
+}
+
+interface HandlebarsTemplateDelegate {
+ (context: any, options?: any): string;
+}
+
+interface HandlebarsTemplates {
+ [index: string]: HandlebarsTemplateDelegate;
+}
+
+declare module hbs {
+ class SafeString {
+ constructor(str: string);
+ static toString(): string;
+ }
+
+ module Utils {
+ function escapeExpression(str: string): string;
+ }
+}
+
+interface Logger {
+ DEBUG: number;
+ INFO: number;
+ WARN: number;
+ ERROR: number;
+ level: number;
+
+ methodMap: { [level: number]: string };
+
+ log(level: number, obj: string): void;
+}
+
+declare module hbs {
+ module AST {
+ interface Node {
+ type: string;
+ loc: SourceLocation;
+ }
+
+ interface SourceLocation {
+ source: string;
+ start: Position;
+ end: Position;
+ }
+
+ interface Position {
+ line: number;
+ column: number;
+ }
+
+ interface Program extends Node {
+ body: Statement[];
+ blockParams: string[];
+ }
+
+ interface Statement extends Node {}
+
+ interface MustacheStatement extends Statement {
+ path: PathExpression | Literal;
+ params: Expression[];
+ hash: Hash;
+ escaped: boolean;
+ strip: StripFlags;
+ }
+
+ interface BlockStatement extends Statement {
+ path: PathExpression;
+ params: Expression[];
+ hash: Hash;
+ program: Program;
+ inverse: Program;
+ openStrip: StripFlags;
+ inverseStrip: StripFlags;
+ closeStrip: StripFlags;
+ }
+
+ interface PartialStatement extends Statement {
+ name: PathExpression | SubExpression;
+ params: Expression[];
+ hash: Hash;
+ indent: string;
+ strip: StripFlags;
+ }
+
+ interface ContentStatement extends Statement {
+ value: string;
+ original: StripFlags;
+ }
+
+ interface CommentStatement extends Statement {
+ value: string;
+ strip: StripFlags;
+ }
+
+ interface Expression extends Node {}
+
+ interface SubExpression extends Expression {
+ path: PathExpression;
+ params: Expression[];
+ hash: Hash;
+ }
+
+ interface PathExpression extends Expression {
+ data: boolean;
+ depth: number;
+ parts: string[];
+ original: string;
+ }
+
+ interface Literal extends Expression {}
+ interface StringLiteral extends Literal {
+ value: string;
+ original: string;
+ }
+
+ interface BooleanLiteral extends Literal {
+ value: boolean;
+ original: boolean;
+ }
+
+ interface NumberLiteral extends Literal {
+ value: number;
+ original: number;
+ }
+
+ interface UndefinedLiteral extends Literal {}
+
+ interface NullLiteral extends Literal {}
+
+ interface Hash extends Node {
+ pairs: HashPair[];
+ }
+
+ interface HashPair extends Node {
+ key: string;
+ value: Expression;
+ }
+
+ interface StripFlags {
+ open: boolean;
+ close: boolean;
+ }
+
+ interface helpers {
+ helperExpression(node: Node): boolean;
+ scopeId(path: PathExpression): boolean;
+ simpleId(path: PathExpression): boolean;
+ }
+ }
+}
+
+declare module "handlebars" {
+ export = Handlebars;
+}