'use strict'; const blessed = require("blessed"); const visualizeAST = require("./lib/ast/visualize"); const esprima = require("esprima"); const util = require("util"); const fs = require("fs"); const markCode = require("./lib/ast/render/mark-code"); let code = fs.readFileSync("./test/1.js").toString(); let _testdata = esprima.parse(code, { range: true, loc: true }); let ast = visualizeAST(_testdata); let screen = blessed.screen({ smartCSR: true, terminal: "xterm-256color", fullUnicode: true }); let list = blessed.list({ parent: screen, selectedBg: "blue", mouse: true, keys: true, width: "50%" }); list.setItems(ast.getLines()); list.select(0); list.on("select item", (_, index) => { let [start, end] = ast.getItemAtIndex(index).range; codeBox.setContent(markCode(code, start, end)); screen.render(); }); let codeBox = blessed.box({ parent: screen, width: "50%", left: "50%", border: { type: "line", fg: "#ffffff" }, content: code }); screen.key("q", function(ch, key) { return process.exit(0); }); screen.render();