public CreateSpecflowStepFromUsageAction( SpecflowStepDeclarationReference reference, IStepDefinitionBuilder stepDefinitionBuilder ) { _reference = reference; _stepDefinitionBuilder = stepDefinitionBuilder; }
public static List <TextRange> BuildParameterRanges(GherkinStep step, SpecflowStepDeclarationReference reference, DocumentRange documentRange) { var stepText = step.GetStepText(); var stepTextWithKeyword = step.GetStepText(true); var stepKeywordLengthWithWhiteSpace = stepTextWithKeyword.Length - stepText.Length; List <TextRange> parameterRanges = new List <TextRange>(); reference.ResolveWithoutCache(); var regex = reference.RegexPattern; if (regex == null) { return(parameterRanges); } var match = regex.Match(stepText); if (match.Success) { foreach (Group matchGroup in match.Groups) { if (matchGroup.Value == stepText) { continue; } var start = stepKeywordLengthWithWhiteSpace + matchGroup.Index; var parameterStart = documentRange.StartOffset.Offset + start; var parameterEnd = parameterStart + matchGroup.Length; TextRange range = new TextRange(parameterStart, parameterEnd); if (!parameterRanges.Contains(range)) { parameterRanges.Add(range); } } } return(parameterRanges); }
private void HighlightStep(GherkinStep step, IHighlightingConsumer consumer) { var references = step.GetFirstClassReferences(); if (references.Count != 1 || !(references[0] is SpecflowStepDeclarationReference)) { return; } SpecflowStepDeclarationReference reference = (SpecflowStepDeclarationReference)references[0]; var document = step.GetDocumentRange().Document; var parameterRanges = GherkinPsiUtil.BuildParameterRanges(step, reference, reference.GetDocumentRange()); foreach (var range in parameterRanges) { var documentRange = new DocumentRange(document, range); consumer.AddHighlighting(new ReSharperSyntaxHighlighting(GherkinHighlightingAttributeIds.REGEXP_PARAMETER, null, documentRange)); } }
protected override void PreInit() { base.PreInit(); _reference = new SpecflowStepDeclarationReference(this); }
public CreateSpecflowStepFromUsageAction(SpecflowStepDeclarationReference reference) { _reference = reference; }