monaco-editor:如何将编辑器中的文本解析为属性,运算符和值等

时间:2017-03-18 21:22:08

标签: 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属性标识为类型为string的属性

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

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

1 个答案:

答案 0 :(得分:2)

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

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

然后

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

获取实际令牌