You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.1 KiB
JavaScript

'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();