Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }