Я использую редактор Monaco для машинописного текста. Есть ли способ получить AST для текущей модели? Можно ли изменить дерево так, чтобы редактор реагировал на изменения? Т.е. я хотел бы сделать простой инструмент рефакторинга машинописного текста?
Редактор Monaco получает доступ к AST
Ответы (2)
Монако не предоставляет свой AST, но вместо этого вы можете использовать jscodeshift:
const editor = monaco.editor.create(
document.querySelector("#editor"), {value: 'var foo;'})// editor content: var foo;
const newValue = jscodeshift(editor.getValue())
.findVariableDeclarators('foo')
.renameTo('bar')
.toSource();
editor.setValue(newValue); // editor content: var bar;
person
David I. Samudio
schedule
11.12.2017
Что-то связанное: я использую monaco для редактирования кода TypeScript на основе Compiler API, но затем код фактически запускается в бэкэнде, поскольку компилятор typeScript не поддерживает браузер, насколько мне известно. https://typescript-api-playground.glitch.me
person
cancerbero
schedule
21.06.2018