public JSParserResult Parse(string code) { var jsp = new Jint.Parser.JavaScriptParser(); var returnedResult = new JSParserResult(); Program program = null; try { program = jsp.Parse(code, new ParserOptions() { Tokens = true, Comment = true, }); } catch (ParserException pex) { returnedResult.Errors.Add(new ErrorMessage() { Message = pex.Message, StartColumn = pex.Column, StartLine = pex.LineNumber }); } catch (Exception ex) { returnedResult.InternalErrors.Add(new ErrorMessage() { Message = ex.Message, StartColumn = 1, StartLine = 1 }); } if (program == null) { return(returnedResult); } var comments = (program.Comments ?? Enumerable.Empty <Comment>()) .Select(c => new CommentWrapper(c)); _comments = new CommentsAgregator(); _comments.ProcessComments(comments); ProcessStatements(program.Body, new ParserContext(returnedResult.Nodes)); returnedResult.TaskList = TaskListAggregator.GetTaskList(_comments.Comments, _settings.ToDoKeyWords).ToList(); return(returnedResult); }
public JSParserResult Parse(string code) { var jsp = new Jint.Parser.JavaScriptParser(); var returnedResult = new JSParserResult(); Program program = null; try { program = jsp.Parse(code, new ParserOptions() { Tokens = true, Comment = true, }); } catch (ParserException pex) { returnedResult.Errors.Add(new ErrorMessage() { Message = pex.Message, StartColumn = pex.Column, StartLine = pex.LineNumber }); } catch (Exception ex) { returnedResult.InternalErrors.Add(new ErrorMessage() { Message = ex.Message, StartColumn = 1, StartLine = 1 }); } if (program == null) { return returnedResult; } var comments = (program.Comments ?? Enumerable.Empty<Comment>()) .Select(c => new CommentWrapper(c)); _comments = new CommentsAgregator(); _comments.ProcessComments(comments); ProcessStatements(program.Body, new ParserContext(returnedResult.Nodes)); returnedResult.TaskList = TaskListAggregator.GetTaskList(_comments.Comments, _settings.ToDoKeyWords).ToList(); return returnedResult; }
/// <summary> /// Build the tree. /// </summary> public bool UpdateTree(JSParserResult result, ICodeProvider codeProvider) { if (result == null) { Clear(); return false; } if(string.IsNullOrEmpty(result.FileName)) { return false; } StatisticsManager.Instance.Statistics.Container = codeProvider.ContainerName; PerformNetworkActivity(); _lastParserResult = result; _codeProvider = codeProvider; _loadedDocName = _lastParserResult.FileName; _expandedNodesManager.SetFile(_loadedDocName); _marksManager.SetFile(_loadedDocName); var isSort = Settings.SortingEnabled; var isHierarchy = true; _treeRefreshing = true; treeView1.BeginUpdate(); treeView1.Nodes.Clear(); _tempTreeNodes.Clear(); _canExpand = true; var nodes = result.Nodes; if (result.Errors.Count > 0) { btnErrorDiagnosis.Visible = true; btnErrorSeparator.Visible = true; btnErrorDiagnosis.DropDownItems.Clear(); result.Errors.ForEach(er => { var item = btnErrorDiagnosis.DropDownItems.Add(er.Message.SplitWordsByCamelCase() + ".\r\nLine: " + er.StartLine, null, ErrorDiagnosisClick); item.Tag = er; }); } else { btnErrorDiagnosis.Visible = false; btnErrorSeparator.Visible = false; } var tasksDataSource = new List<object>(); if (result.TaskList.Count > 0) { lbTaskList.Text = string.Format(" Task List: {0} items", result.TaskList.Count); int i = 0; result.TaskList.ForEach(t => { ++i; var item = new { No = i.ToString(), Desc = t.Description, Line = t.StartLine.ToString(), }; tasksDataSource.Add(item); }); splitContainer1.Panel2Collapsed = false; SetToDoSplitterPosition(); } else { splitContainer1.Panel2Collapsed = true; tasksDataSource.Add(new {No = "", Desc="", Line="" }); //add fake row to workaround column sizing bug } taskListDataGrid.DataSource = tasksDataSource; taskListDataGrid.CurrentCell = null; _lastCodeLine = -1; _functions = new List<CodeNode>(); FillNodes(nodes, treeView1.Nodes, 0, _functions); if (!isHierarchy) { if (isSort) { _tempTreeNodes.Sort((n1, n2) => string.Compare(n1.Text, n2.Text)); } foreach (TreeNode node in _tempTreeNodes) { treeView1.Nodes.Add(node); } } if (filterByMarksToolStripMenuItem.Checked) { HideUnmarkedNodes(treeView1.Nodes); } treeView1.EndUpdate(); _treeRefreshing = false; AdjustLineNumbersPanelSize(); panelLinesNumbers.Refresh(); return treeView1.Nodes.Count > 0; }