Extract function names

by Denise Nepraunig

HTML

<button id="btnExtractFunctions">Extract Function Names</button>
<p>
    <div id="functionNames"></div>
    <div>
        <textarea id="coding" rows="100" cols="100">onDocumentStateChanged : function(oEvent) { var oDocument = oEvent.params.document; var aTabs = this._getTabsOfDocument(oDocument); for (var i = 0; i
            < aTabs.length; i++) { var iTabIndex=a Tabs[i]; this._getTabController().setDirty(iTabIndex, oDocument.isDirty()); } this.context.service.command.invalidateAll().done(); }, onDocumentDeleted : function(oEvent) { var oDocument=o Event.params.document; this._closeDocument(oDocument, false); }, </textarea>
    </div>
</p>

CSS

#functionNames {
    width: 250px;
    float:left;
    border: 1px dotted black;
}
div {
    margin: 0px 5px;
    padding: 0px 5px;
}

textarea {
    .line-height: 16px;
}
.myClass {
    color: red;
}

JavaScript

$("#btnExtractFunctions").click(extractFunctionNames);

function extractFunctionNames() {

    var lines = $("#coding").val().split("\n");
    //alert(lines.length);
    var functionNames = [];

    var i;
    var linesLength = lines.length;


    for (i = 0; i < linesLength; i++) {
        var line = lines[i];

        if (line.indexOf("function") > 0 // line contains function
        &&
        line.indexOf("define") < 0 // it is not define line
        &&
        line.indexOf("\//") < 0 // not part of docu 
        &&
        line.indexOf("spread") < 0 // it is not a spread function
        &&
        line.indexOf("fail") < 0 // it is not a fail function
        &&
        line.indexOf("catch") < 0 // it is not a catch function
        &&
        line.indexOf("then") < 0) // not part of promise chain
        {

            line = line.replace("{", " ");
            line = line.trim();
            functionNames.push(line);
            $("#functionNames").append("<span data-line='" + i + "'>" + line + "</br></span>");
        }


    }
    console.log(lines.length);
   // console.log(functionNames);

}

function scrollToLine($textarea, lineNumber) {
    var lineHeight = parseInt($textarea.css('line-height'));
    $textarea.scrollTop(lineNumber * lineHeight);
}

function Jump(line)
{
  var ta = document.getElementById("coding");
  var lineHeight = ta.clientHeight / ta.rows;
  var jump = (line - 1) * lineHeight;
  ta.scrollTop = jump;
}

var textArea = $("textarea");

$(document).on('click','span',function(){
    // code here
     //alert("hello span");
    var line = $(this).attr("data-line");
    //alert(line);
    //scrollToLine(textArea, line);
    Jump(line);
   // hiliter('function', '#coding');
    //doSearch('function');
    
    var textarea = document.getElementById("coding");
    var val = textarea.value;
    var start = val.indexOf("function") + 5;
    var end = val.indexOf("oEditor");
//    setSelection(textarea, start, end);
});

function...