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);
 }
Example #5
0
 public CreateSpecflowStepFromUsageAction(SpecflowStepDeclarationReference reference)
 {
     _reference = reference;
 }