Exemple #1
0
        private bool NeedCompletion()
        {
            string filename = Document.FileName;

            return(GherkinUtil.IsFeatureFile(filename) &&
                   IsLeadingTextOfCurrentLineWhiteSpace());
        }
Exemple #2
0
        private bool CanFormatTable(TextDocument document, DocumentLine line)
        {
            if (!GherkinUtil.IsFeatureFile(Document.FileName))
            {
                return(false);
            }

            GherkinSimpleParser       parser   = new GherkinSimpleParser(document);
            Tuple <TokenType, string> lineType = parser.Format(GetText(document, line));

            if (lineType.Item1 != TokenType.TableRow)
            {
                return(false);
            }

            var previousLine = line?.PreviousLine;

            if (previousLine == null)
            {
                return(false);
            }

            Tuple <TokenType, string> previousLineType = parser.Format(GetText(document, previousLine));

            if (previousLineType.Item1 == TokenType.TableRow)
            {
                return(true);
            }
            else
            {
                Tuple <TokenType, string> currentLineType = parser.Format(GetText(document, line));
                return(currentLineType.Item1 == TokenType.TableRow);
            }
        }
Exemple #3
0
        private bool CanShowCodeCompletion()
        {
            if (!GherkinUtil.IsFeatureFile(Document.FileName))
            {
                return(false);
            }

            var    caret = TextEditor.TextArea.Caret;
            var    line  = Document.GetLineByNumber(caret.Line);
            string text  = GherkinFormatUtil.GetText(Document, line);

            return(string.IsNullOrWhiteSpace(text));
        }
 protected virtual bool CanApplyGenerator()
 {
     return(GherkinUtil.IsFeatureFile(Document.FileName));
 }
        public override void IndentLine(TextDocument document, DocumentLine line)
        {
            if (!GherkinUtil.IsFeatureFile(document?.FileName))
            {
                base.IndentLine(document, line);
                return;
            }

            if (document == null)
            {
                throw new ArgumentNullException(nameof(document));
            }
            if (line == null)
            {
                throw new ArgumentNullException(nameof(line));
            }

            if (string.IsNullOrEmpty(document.FileName) ||
                !GherkinUtil.IsFeatureFile(document.FileName))
            {
                return;
            }

            DocumentLine previousLine = line.PreviousLine;

            if (previousLine == null)
            {
                return;
            }

            GherkinSimpleParser       parser = new GherkinSimpleParser(document);
            Tuple <TokenType, string> result = parser.Format(GetText(document, previousLine));

            switch (result.Item1)
            {
            case TokenType.FeatureLine:
            case TokenType.BackgroundLine:
            case TokenType.ExamplesLine:
            case TokenType.StepLine:
                document.Replace(previousLine.Offset, previousLine.TotalLength,
                                 MakeTwoLines(result.Item2, GherkinSimpleParser.IDENT2));
                break;

            case TokenType.ScenarioLine:
            case TokenType.ScenarioOutlineLine:
                string guid_tag = MakeGUID(document, previousLine.PreviousLine);
                document.Replace(previousLine.Offset, previousLine.TotalLength,
                                 MakeThreeLines(guid_tag, result.Item2, GherkinSimpleParser.IDENT2));
                break;

            case TokenType.TableRow:
                if (!TableFormatter.FormatTable(line, isEnteredNewLine: true, isColumnInserted: false))
                {
                    base.IndentLine(Document, line);
                }
                break;

            default:
                base.IndentLine(document, line);
                break;
            }
        }