Редактор Monaco получает доступ к AST

Я использую редактор Monaco для машинописного текста. Есть ли способ получить AST для текущей модели? Можно ли изменить дерево так, чтобы редактор реагировал на изменения? Т.е. я хотел бы сделать простой инструмент рефакторинга машинописного текста?


person pastorgluk    schedule 20.11.2017    source источник


Ответы (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