1 | import { parseCodeToAST } from 'builder/astBuilder';
|
2 |
|
3 | import FlowTreeBuilder, {
|
4 | ABSTRACTION_LEVELS,
|
5 | MODIFIER_PRESETS,
|
6 | DEFINED_MODIFIERS
|
7 | } from 'builder/FlowTreeBuilder';
|
8 | import SVGRender from 'render/svg/SVGRender';
|
9 | import { TOKEN_TYPES, MODIFIED_TYPES } from 'shared/constants';
|
10 |
|
11 | const buildTreeByAbstractionLevels = levels => {
|
12 | const flowTreeBuilder = FlowTreeBuilder();
|
13 | flowTreeBuilder.setAbstractionLevel(levels);
|
14 |
|
15 | return astTree => flowTreeBuilder.buildFlowTreeFromAst(astTree);
|
16 | };
|
17 |
|
18 | export const generateExportSlideTree = buildTreeByAbstractionLevels(ABSTRACTION_LEVELS.EXPORT);
|
19 |
|
20 | export const generateImportExportSlideTree = buildTreeByAbstractionLevels([
|
21 | ABSTRACTION_LEVELS.EXPORT,
|
22 | ABSTRACTION_LEVELS.IMPORT
|
23 | ]);
|
24 |
|
25 | export const generateClassFunctionSlideTree = buildTreeByAbstractionLevels([
|
26 | ABSTRACTION_LEVELS.EXPORT,
|
27 | ABSTRACTION_LEVELS.IMPORT,
|
28 | ABSTRACTION_LEVELS.CLASS,
|
29 | ABSTRACTION_LEVELS.FUNCTION
|
30 | ]);
|
31 |
|
32 | export const generateClassFunctionDependenciesSlideTree = buildTreeByAbstractionLevels([
|
33 | ABSTRACTION_LEVELS.EXPORT,
|
34 | ABSTRACTION_LEVELS.IMPORT,
|
35 | ABSTRACTION_LEVELS.CLASS,
|
36 | ABSTRACTION_LEVELS.FUNCTION,
|
37 | ABSTRACTION_LEVELS.FUNCTION_DEPENDENCIES
|
38 | ]);
|
39 |
|
40 | export const generateRegularSlideTree = astTree => {
|
41 | const flowTreeBuilder = FlowTreeBuilder();
|
42 | return flowTreeBuilder.buildFlowTreeFromAst(astTree);
|
43 | };
|
44 |
|
45 | export default code => ({
|
46 | buildSlides: () => {
|
47 | const svgRender = SVGRender(),
|
48 | astTree = parseCodeToAST(code);
|
49 |
|
50 | const slides = [
|
51 | generateExportSlideTree(astTree),
|
52 | generateImportExportSlideTree(astTree),
|
53 | generateClassFunctionSlideTree(astTree),
|
54 | generateClassFunctionDependenciesSlideTree(astTree),
|
55 | generateRegularSlideTree(astTree)
|
56 | ];
|
57 |
|
58 | return slides
|
59 | .filter(slide => slide.body.length)
|
60 | .map(svgRender.buildShapesTree)
|
61 | .map(shapesTree => shapesTree.print());
|
62 | }
|
63 | });
|