private bool NeedCompletion() { string filename = Document.FileName; return(GherkinUtil.IsFeatureFile(filename) && IsLeadingTextOfCurrentLineWhiteSpace()); }
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); } }
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; } }