aboutsummaryrefslogtreecommitdiff
path: root/www/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/index.js')
-rw-r--r--www/index.js25
1 files changed, 23 insertions, 2 deletions
diff --git a/www/index.js b/www/index.js
index f98a48b..ec95f70 100644
--- a/www/index.js
+++ b/www/index.js
@@ -1,4 +1,4 @@
1import {SynNode, put_cst} from "cstea"; 1import {SynNode} from "cstea";
2import {EditorState, EditorView, basicSetup} from "@codemirror/basic-setup" 2import {EditorState, EditorView, basicSetup} from "@codemirror/basic-setup"
3import {Decoration, DecorationSet} from "@codemirror/view" 3import {Decoration, DecorationSet} from "@codemirror/view"
4import {StateField, StateEffect} from "@codemirror/state" 4import {StateField, StateEffect} from "@codemirror/state"
@@ -63,7 +63,7 @@ function render_cst(synRoot) {
63 let nodeDiv = document.createElement("div"); 63 let nodeDiv = document.createElement("div");
64 nodeDiv.className = "syntax-node"; 64 nodeDiv.className = "syntax-node";
65 let r = synRoot.range(); 65 let r = synRoot.range();
66 let synText = wrap(synRoot.kind() + " @ " + r.to_string() + " " +synRoot.text(), "pre"); 66 let synText = synTextHtml(synRoot);
67 synText.onmouseover = () => { 67 synText.onmouseover = () => {
68 highlightArea(view, r); 68 highlightArea(view, r);
69 let sourceFile = view.state.doc.toString(); 69 let sourceFile = view.state.doc.toString();
@@ -78,6 +78,27 @@ function render_cst(synRoot) {
78 return nodeDiv; 78 return nodeDiv;
79} 79}
80 80
81function synTextHtml(node) {
82 let kind = document.createElement("span");
83 kind.innerText = ` ${node.kind()} `
84 kind.className = "kind";
85
86 let text = document.createElement("span");
87 text.innerText = ` ${node.text()} `
88 text.className = "token-text";
89
90 let range = document.createElement("span");
91 range.innerText = ` ${node.range().to_string()} `
92 range.className = "range";
93
94 let d = document.createElement("div");
95 d.appendChild(kind);
96 d.appendChild(text);
97 d.appendChild(range);
98
99 return d;
100}
101
81function wrap(s, tag) { 102function wrap(s, tag) {
82 let t = document.createElement(tag); 103 let t = document.createElement(tag);
83 t.innerText = s; 104 t.innerText = s;