1

我知道如何将文本输入到 monaco-editor

    var editor = monaco.editor.create(document.getElementById('container'), {
                        value: ['aso.EnvironmentName = "DEV"'
                        ].join('\n'),
                        language: 'typescript'
 editor.getValue();

这让我得到以下

aso.EnvironmentName = "DEV"

而我想要的是类似于这个的东西

{
object:'aso',
property:'EnvironmentName',
operator:'=',
value:'DEV'
}

这个选择器得到以下内容,我可以用 "".split(' ') 进一步解析

$.each($('span[class^="mtk"]'),function(idx,s){
    console.info(idx,$(s).html());
});

得到我以下。我很难相信 monaco 对象不能返回我想要的,因为它提供了一个弹出窗口,将 EnvironmentName 属性标识为字符串类型的属性

0 "aso.EnvironmentName = "
1 ""DEV""

这是我可以从编辑器的 API 中做的事情吗?还是我需要将文本发送回我可以使用适当反射工具的服务?

4

1 回答 1

3

回答我自己的问题......

解决方案是使用monaco.editor.tokenize()并返回每个标记的索引位置及其类型的数组

接着

let m = editor.getModel();
m.getWordAtPosition(m.getPositionAt(34))

获取实际令牌

于 2017-03-20T15:41:01.313 回答