added missing type fields in typings and tests for them

This commit is contained in:
Alexander Schramm
2019-10-07 23:09:08 +02:00
committed by Nils Knappmeier
parent b793350fec
commit 0440af2147
2 changed files with 102 additions and 3 deletions
+19 -2
View File
@@ -270,6 +270,7 @@ declare namespace hbs {
interface Statement extends Node {} interface Statement extends Node {}
interface MustacheStatement extends Statement { interface MustacheStatement extends Statement {
type: 'MustacheStatement';
path: PathExpression | Literal; path: PathExpression | Literal;
params: Expression[]; params: Expression[];
hash: Hash; hash: Hash;
@@ -280,6 +281,7 @@ declare namespace hbs {
interface Decorator extends MustacheStatement { } interface Decorator extends MustacheStatement { }
interface BlockStatement extends Statement { interface BlockStatement extends Statement {
type: 'BlockStatement';
path: PathExpression; path: PathExpression;
params: Expression[]; params: Expression[];
hash: Hash; hash: Hash;
@@ -293,6 +295,7 @@ declare namespace hbs {
interface DecoratorBlock extends BlockStatement { } interface DecoratorBlock extends BlockStatement { }
interface PartialStatement extends Statement { interface PartialStatement extends Statement {
type: 'PartialStatement';
name: PathExpression | SubExpression; name: PathExpression | SubExpression;
params: Expression[]; params: Expression[];
hash: Hash; hash: Hash;
@@ -301,6 +304,7 @@ declare namespace hbs {
} }
interface PartialBlockStatement extends Statement { interface PartialBlockStatement extends Statement {
type: 'PartialBlockStatement';
name: PathExpression | SubExpression; name: PathExpression | SubExpression;
params: Expression[]; params: Expression[];
hash: Hash; hash: Hash;
@@ -310,11 +314,13 @@ declare namespace hbs {
} }
interface ContentStatement extends Statement { interface ContentStatement extends Statement {
type: 'ContentStatement';
value: string; value: string;
original: StripFlags; original: StripFlags;
} }
interface CommentStatement extends Statement { interface CommentStatement extends Statement {
type: 'CommentStatement';
value: string; value: string;
strip: StripFlags; strip: StripFlags;
} }
@@ -322,12 +328,14 @@ declare namespace hbs {
interface Expression extends Node {} interface Expression extends Node {}
interface SubExpression extends Expression { interface SubExpression extends Expression {
type: 'SubExpression';
path: PathExpression; path: PathExpression;
params: Expression[]; params: Expression[];
hash: Hash; hash: Hash;
} }
interface PathExpression extends Expression { interface PathExpression extends Expression {
type: 'PathExpression';
data: boolean; data: boolean;
depth: number; depth: number;
parts: string[]; parts: string[];
@@ -336,29 +344,38 @@ declare namespace hbs {
interface Literal extends Expression {} interface Literal extends Expression {}
interface StringLiteral extends Literal { interface StringLiteral extends Literal {
type: 'StringLiteral';
value: string; value: string;
original: string; original: string;
} }
interface BooleanLiteral extends Literal { interface BooleanLiteral extends Literal {
type: 'BooleanLiteral';
value: boolean; value: boolean;
original: boolean; original: boolean;
} }
interface NumberLiteral extends Literal { interface NumberLiteral extends Literal {
type: 'NumberLiteral';
value: number; value: number;
original: number; original: number;
} }
interface UndefinedLiteral extends Literal {} interface UndefinedLiteral extends Literal {
type: 'UndefinedLiteral';
}
interface NullLiteral extends Literal {} interface NullLiteral extends Literal {
type: 'NullLiteral';
}
interface Hash extends Node { interface Hash extends Node {
type: 'Hash';
pairs: HashPair[]; pairs: HashPair[];
} }
interface HashPair extends Node { interface HashPair extends Node {
type: 'HashPair';
key: string; key: string;
value: Expression; value: Expression;
} }
+82
View File
@@ -111,3 +111,85 @@ Handlebars.compile('test', {
Handlebars.compile('test')({},{allowCallsToHelperMissing: true}); Handlebars.compile('test')({},{allowCallsToHelperMissing: true});
Handlebars.compile('test')({},{}); Handlebars.compile('test')({},{});
const allthings = {} as hbs.AST.MustacheStatement |
hbs.AST.BlockStatement |
hbs.AST.PartialStatement |
hbs.AST.PartialBlockStatement |
hbs.AST.ContentStatement |
hbs.AST.CommentStatement |
hbs.AST.SubExpression |
hbs.AST.PathExpression |
hbs.AST.StringLiteral |
hbs.AST.BooleanLiteral |
hbs.AST.NumberLiteral |
hbs.AST.UndefinedLiteral |
hbs.AST.NullLiteral |
hbs.AST.Hash |
hbs.AST.HashPair;
switch(allthings.type) {
case "MustacheStatement":
let mustacheStatement: hbs.AST.MustacheStatement;
mustacheStatement = allthings;
break;
case "BlockStatement":
let blockStatement: hbs.AST.BlockStatement;
blockStatement = allthings;
break;
case "PartialStatement":
let partialStatement: hbs.AST.PartialStatement;
partialStatement = allthings;
break;
case "PartialBlockStatement":
let partialBlockStatement: hbs.AST.PartialBlockStatement;
partialBlockStatement = allthings;
break;
case "ContentStatement":
let ContentStatement: hbs.AST.ContentStatement;
ContentStatement = allthings;
break;
case "CommentStatement":
let CommentStatement: hbs.AST.CommentStatement;
CommentStatement = allthings;
break;
case "SubExpression":
let SubExpression: hbs.AST.SubExpression;
SubExpression = allthings;
break;
case "PathExpression":
let PathExpression: hbs.AST.PathExpression;
PathExpression = allthings;
break;
case "StringLiteral":
let StringLiteral: hbs.AST.StringLiteral;
StringLiteral = allthings;
break;
case "BooleanLiteral":
let BooleanLiteral: hbs.AST.BooleanLiteral;
BooleanLiteral = allthings;
break;
case "NumberLiteral":
let NumberLiteral: hbs.AST.NumberLiteral;
NumberLiteral = allthings;
break;
case "UndefinedLiteral":
let UndefinedLiteral: hbs.AST.UndefinedLiteral;
UndefinedLiteral = allthings;
break;
case "NullLiteral":
let NullLiteral: hbs.AST.NullLiteral;
NullLiteral = allthings;
break;
case "Hash":
let Hash: hbs.AST.Hash;
Hash = allthings;
break;
case "HashPair":
let HashPair: hbs.AST.HashPair;
HashPair = allthings;
break;
default:
break;
}