UNPKG

budgie-cli

Version:
38 lines (31 loc) 1.31 kB
import { CommandNames } from "budgie"; import { BudgieLine, IRange, Transformation } from "ts-budgie"; export interface IUnsupportedComplaint { line: BudgieLine; range: IRange; } const visitTransformation = (transformation: Transformation, complaints: IUnsupportedComplaint[]): void => { for (const output of transformation.output) { if (output instanceof BudgieLine) { if (output.command === CommandNames.Unsupported) { complaints.push({ line: output, range: transformation.range, }); break; } } else if (output instanceof Transformation) { visitTransformation(output, complaints); } } }; const visitTransformations = (transformations: ReadonlyArray<Transformation>, complaints: IUnsupportedComplaint[]): void => { for (const transformation of transformations) { visitTransformation(transformation, complaints); } }; export const collectUnsupportedTransforms = (transformations: ReadonlyArray<Transformation>): ReadonlyArray<IUnsupportedComplaint> => { const complaints: IUnsupportedComplaint[] = []; visitTransformations(transformations, complaints); return complaints; };