Code Mirror首先查找功能

时间:2014-05-18 11:50:46

标签: javascript codemirror

我正在使用代码镜为我教的课程构建一些编码练习。我进行了设置,以便代码镜像一次检索一行代码,突出显示当前行,以便学生可以在执行时查看每个步骤。

问题是我希望学生能够创建自己的功能,但我无法逐行阅读代码。我需要先找到任何用户定义的函数。然后,如果用户调用该函数,我需要跳转到该函数,读取函数内的行,然后返回到用户调用函数的位置继续读取其余代码。

有什么想法?我挖掘了手册,没有任何东西作为解决方案跳出来。提前致谢。

var editor = CodeMirror.fromTextArea(document.getElementById("editor"), {
            lineNumbers: true,
            mode: "javascript",
            matchBrackets: true
        });
        editor.setSize(400, 400);


$('#submit').click(function(){
      //read the next line of code each second
        myVar=setInterval(function(){getCode()},1000);
    });


    function getCode(){
     //only read lines that have code written in them
        var lines = editor.lineCount();

     //get all the code on that specific line
        var code = editor.getRange({'line': i, 'ch': 0}, {'line': i, 'ch': 255});


//highlight
        editor.removeLineClass(i-1, 'background', 'highlight');
        editor.addLineClass(i, 'background', 'highlight');

//evaluate code (this will be replaced with a library eventually for security reasons)
        eval(code);
        i++;

//stop once all lines have been read
        if(i > lines){
            clearInterval(myVar);
        } 

1 个答案:

答案 0 :(得分:0)

使用解析器获取更抽象的代码视图。由于学生可能正在编辑代码,并且它可能在语法上无效,因此Acorn的容错解析器可能非常合适。请参阅http://marijnhaverbeke.nl/acornhttp://marijnhaverbeke.nl/blog/parse-dammit.html