public CaptureMarkup(CaptureMarkupDefinition definition, int startIndex, int endIndex) : base(definition) { StartSyntax = definition.StartSyntax; EndSyntax = definition.EndSyntax; StartIndex = startIndex; EndIndex = endIndex; }
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); }