Esempio n. 1
0
            public CaptureMarkup(CaptureMarkupDefinition definition, int startIndex, int endIndex)
                : base(definition)
            {
                StartSyntax = definition.StartSyntax;
                EndSyntax   = definition.EndSyntax;

                StartIndex = startIndex;
                EndIndex   = endIndex;
            }
Esempio n. 2
0
        private bool TryGetCaptureMarkup(
            string markup,
            int index,
            CaptureMarkupDefinition markupDefinition,
            out CaptureMarkup captureMarkup,
            out TextSpan startSpan,
            out TextSpan endSpan)
        {
            var currentMarkup = markup.Substring(0, index + 1);

            if (currentMarkup.EndsWith(markupDefinition.StartSyntax, false, CultureInfo.InvariantCulture))
            {
                // Found starting syntax
                var span = GetTextSpanForSyntax(index, markupDefinition.StartSyntax);
                markupDefinition.StartSpans.Push(span);
            }

            if (currentMarkup.EndsWith(markupDefinition.EndSyntax, false, CultureInfo.InvariantCulture))
            {
                // Found ending syntax
                if (markupDefinition.StartSpans.Count > 0)
                {
                    startSpan     = markupDefinition.StartSpans.Pop();
                    endSpan       = GetTextSpanForSyntax(index, markupDefinition.EndSyntax);
                    captureMarkup = new CaptureMarkup(markupDefinition, startSpan.Start, endSpan.Start);
                    return(true);
                }
                else
                {
                    throw new InvalidOperationException(
                              string.Format(
                                  CultureInfo.CurrentCulture,
                                  MissingSyntaxTemplate,
                                  markupDefinition.EndSyntax,
                                  markupDefinition.StartSyntax));
                }
            }

            // Use defaults (values shouldn't be used)
            startSpan     = default(TextSpan);
            endSpan       = default(TextSpan);
            captureMarkup = null;

            return(false);
        }