/// <summary> /// Calculates the spans. /// </summary> static void CalculateSpans(Scope scope) { var lineCount = scope.Get(Keys.LineCount); var getTextAtLine = scope.Get(Keys.GetTextAtLine); var currentLineIndex = scope.Get(Keys.CurrentLineIndex); var addTagSpan = scope.Get(Keys.AddTagSpan); var textSnapshotLines = scope.Get(Keys.TextSnapshotLines); var responseAssignmentLine = scope.Get(ResponseAssignmentLine); var responseValueAssignmentToAnotherVariable = VariableAssignmentLine.Parse(getTextAtLine(scope.Get(Cursor))); if (responseValueAssignmentToAnotherVariable != null && VariableAssignmentLine.IsResponseValueMatch(responseAssignmentLine, responseValueAssignmentToAnotherVariable)) { var sb = new StringBuilder(); if (responseValueAssignmentToAnotherVariable.VariableTypeName != null) { sb.Append(responseValueAssignmentToAnotherVariable.VariableTypeName); sb.Append(" "); } sb.Append(responseValueAssignmentToAnotherVariable.VariableName); sb.Append(" = "); sb.Append(responseAssignmentLine.AssignedValue); sb.Append(";"); var span = new SnapshotSpan(textSnapshotLines[currentLineIndex].Start.SkipChars(' '), textSnapshotLines[scope.Get(Cursor)].End); var tag = new TagData { Text = sb.ToString(), Span = span }; addTagSpan(new TagSpan <TagData>(span, tag)); scope.Update(Keys.CurrentLineIndex, scope.Get(Cursor) + 1); scope.Update(Keys.IsAnyValueProcessed, true); return; } MoveBackCursor(scope); { var start = textSnapshotLines[currentLineIndex].Start.SkipChars(' '); var end = textSnapshotLines[scope.Get(Cursor)].End; var span = new SnapshotSpan(start, end); var tag = new TagData { Text = responseAssignmentLine.AssignedValue + ";", Span = span }; addTagSpan(new TagSpan <TagData>(span, tag)); } scope.Update(Keys.CurrentLineIndex, scope.Get(Cursor) + 1); scope.Update(Keys.IsAnyValueProcessed, true); }
/// <summary> /// Shoulds the be response check. /// </summary> static void ShouldBeResponseCheck(Scope scope) { var lineCount = scope.Get(Keys.LineCount); var getTextAtLine = scope.Get(Keys.GetTextAtLine); var cursor = scope.Get(Cursor); var line = getTextAtLine(cursor); if (line == null) { scope.Update(IsParseFailed, true); return; } line = line.Replace(" ", Empty); if (line.StartsWith("if(!") && line.EndsWith(".Success)")) { var responseVariableName = line.RemoveFromStart("if(!"); responseVariableName = responseVariableName.RemoveFromEnd(".Success)"); var responseAssignmentLine = VariableAssignmentLine.Parse(getTextAtLine(scope.Get(Keys.CurrentLineIndex))); if (responseAssignmentLine == null) { scope.Update(IsParseFailed, true); return; } if (responseAssignmentLine.VariableName != responseVariableName) { scope.Update(IsParseFailed, true); return; } scope.Update(ResponseAssignmentLine, responseAssignmentLine); return; } scope.Update(IsParseFailed, true); }