js2flowchart
Version:
> Why? While I've been working on [Under-the-hood-ReactJS](https://github.com/Bogdan-Lyashenko/Under-the-hood-ReactJS) I spent enormous amount of time on creating schemes. Each change in code or flowchart affects all entire scheme instantly, forcing you t
33 lines • 1.97 kB
JavaScript
import { parseCodeToAST } from 'builder/astBuilder';
import FlowTreeBuilder, { ABSTRACTION_LEVELS, MODIFIER_PRESETS, DEFINED_MODIFIERS } from 'builder/FlowTreeBuilder';
import SVGRender from 'render/svg/SVGRender';
import { TOKEN_TYPES, MODIFIED_TYPES } from 'shared/constants';
var buildTreeByAbstractionLevels = function buildTreeByAbstractionLevels(levels) {
var flowTreeBuilder = FlowTreeBuilder();
flowTreeBuilder.setAbstractionLevel(levels);
return function (astTree) {
return flowTreeBuilder.buildFlowTreeFromAst(astTree);
};
};
export var generateExportSlideTree = buildTreeByAbstractionLevels(ABSTRACTION_LEVELS.EXPORT);
export var generateImportExportSlideTree = buildTreeByAbstractionLevels([ABSTRACTION_LEVELS.EXPORT, ABSTRACTION_LEVELS.IMPORT]);
export var generateClassFunctionSlideTree = buildTreeByAbstractionLevels([ABSTRACTION_LEVELS.EXPORT, ABSTRACTION_LEVELS.IMPORT, ABSTRACTION_LEVELS.CLASS, ABSTRACTION_LEVELS.FUNCTION]);
export var generateClassFunctionDependenciesSlideTree = buildTreeByAbstractionLevels([ABSTRACTION_LEVELS.EXPORT, ABSTRACTION_LEVELS.IMPORT, ABSTRACTION_LEVELS.CLASS, ABSTRACTION_LEVELS.FUNCTION, ABSTRACTION_LEVELS.FUNCTION_DEPENDENCIES]);
export var generateRegularSlideTree = function generateRegularSlideTree(astTree) {
var flowTreeBuilder = FlowTreeBuilder();
return flowTreeBuilder.buildFlowTreeFromAst(astTree);
};
export default (function (code) {
return {
buildSlides: function buildSlides() {
var svgRender = SVGRender(),
astTree = parseCodeToAST(code);
var slides = [generateExportSlideTree(astTree), generateImportExportSlideTree(astTree), generateClassFunctionSlideTree(astTree), generateClassFunctionDependenciesSlideTree(astTree), generateRegularSlideTree(astTree)];
return slides.filter(function (slide) {
return slide.body.length;
}).map(svgRender.buildShapesTree).map(function (shapesTree) {
return shapesTree.print();
});
}
};
});