UNPKG

1.99 kBJavaScriptView Raw
1import { parseCodeToAST } from 'builder/astBuilder';
2
3import FlowTreeBuilder, {
4 ABSTRACTION_LEVELS,
5 MODIFIER_PRESETS,
6 DEFINED_MODIFIERS
7} from 'builder/FlowTreeBuilder';
8import SVGRender from 'render/svg/SVGRender';
9import { TOKEN_TYPES, MODIFIED_TYPES } from 'shared/constants';
10
11const buildTreeByAbstractionLevels = levels => {
12 const flowTreeBuilder = FlowTreeBuilder();
13 flowTreeBuilder.setAbstractionLevel(levels);
14
15 return astTree => flowTreeBuilder.buildFlowTreeFromAst(astTree);
16};
17
18export const generateExportSlideTree = buildTreeByAbstractionLevels(ABSTRACTION_LEVELS.EXPORT);
19
20export const generateImportExportSlideTree = buildTreeByAbstractionLevels([
21 ABSTRACTION_LEVELS.EXPORT,
22 ABSTRACTION_LEVELS.IMPORT
23]);
24
25export const generateClassFunctionSlideTree = buildTreeByAbstractionLevels([
26 ABSTRACTION_LEVELS.EXPORT,
27 ABSTRACTION_LEVELS.IMPORT,
28 ABSTRACTION_LEVELS.CLASS,
29 ABSTRACTION_LEVELS.FUNCTION
30]);
31
32export 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
40export const generateRegularSlideTree = astTree => {
41 const flowTreeBuilder = FlowTreeBuilder();
42 return flowTreeBuilder.buildFlowTreeFromAst(astTree);
43};
44
45export 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});