ts-budgie
Version:
Converts TypeScript code to Budgie.
36 lines (30 loc) • 1.34 kB
text/typescript
import { CaseStyleConverterBag, NameSplitter } from "budgie";
import * as tsutils from "tsutils";
import { Transformation } from "../output/transformation";
import { RootAliaser } from "../parsing/aliasers/rootAliaser";
import { TransformationsPrinter } from "../printing/transformationsPrinter";
import { ITransformerSettings } from "../service";
import { VisitorContext } from "./context";
import { NodeVisitRouter } from "./router";
import { VisitorCreatorsBag } from "./visitorCreatorsBag";
export const visitSourceFile = ({ contextOptions, sourceFile, typeChecker }: ITransformerSettings): Transformation[] => {
const aliaser = new RootAliaser(sourceFile, typeChecker);
const casing = new CaseStyleConverterBag();
const nameSplitter = new NameSplitter();
const printer = new TransformationsPrinter();
const variableUsage = tsutils.collectVariableUsage(sourceFile);
const visitorContext = new VisitorContext(contextOptions);
const visitorCreatorsBag = new VisitorCreatorsBag();
const router = new NodeVisitRouter({
aliaser,
casing,
printer,
nameSplitter,
sourceFile,
typeChecker,
variableUsage,
visitorContext,
visitorCreatorsBag,
});
return router.recurseIntoNode(sourceFile);
};