ts-budgie
Version:
Converts TypeScript code to Budgie.
31 lines (26 loc) • 1.09 kB
text/typescript
import { CommandNames } from "budgie";
import * as ts from "typescript";
import { BudgieLine } from "../../output/budgieLine";
import { Transformation } from "../../output/transformation";
import { NodeVisitor } from "../visitor";
export class InterfaceDeclarationVisitor extends NodeVisitor {
public visit(node: ts.InterfaceDeclaration) {
const bodyNodes = this.router.recurseIntoNodes(node.members);
const name = node.name.text;
const extensions: string[] = [];
if (node.heritageClauses !== undefined) {
for (const clause of node.heritageClauses) {
for (const type of clause.types) {
extensions.push(type.expression.getText(this.sourceFile));
}
}
}
return [
Transformation.fromNode(node, this.sourceFile, [
new BudgieLine(CommandNames.InterfaceStart, name, ...extensions),
...bodyNodes,
new BudgieLine(CommandNames.InterfaceEnd),
]),
];
}
}