ngrx-uml
Version:
NGRX to Plant UML diagram
56 lines (55 loc) • 2.07 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Converter = void 0;
const chalk_1 = __importDefault(require("chalk"));
const loglevel_1 = __importDefault(require("loglevel"));
const default_converter_1 = require("../../impl/converters/node-converters/default.converter");
class Converter {
constructor() {
this.converters = {};
this.defaultConverter = new default_converter_1.DefaultConverter();
}
registerConverters(converters, { replace = false }) {
this.converters = replace ? converters : Object.assign(Object.assign({}, this.converters), converters);
}
convert(context, program) {
for (const sourceFile of program.getSourceFiles()) {
if (sourceFile.isDeclarationFile) {
continue;
}
loglevel_1.default.trace('convert file:', chalk_1.default.cyan(sourceFile.fileName));
sourceFile.forEachChild((node) => this.convertRecursive(context, node));
}
context.finish();
return context.getResult();
}
convertNode(context, node, withDefault = false) {
const nodeConverters = this.converters[node.kind];
if (nodeConverters) {
for (const converter of nodeConverters) {
const convertResult = converter.convert(context, node);
if (convertResult) {
return convertResult;
}
}
}
else if (withDefault) {
return this.defaultConverter.convert(context, node);
}
return;
}
convertRecursive(context, node) {
if (!this.nodeFilter || this.nodeFilter(node)) {
if (this.convertNode(context, node)) {
return;
}
}
node.forEachChild(child => {
this.convertRecursive(context, child);
});
}
}
exports.Converter = Converter;
;