예제 #1
0
 public PositionMarkup(PositionMarkupDefinition definition, int index, GroupCollection groups)
     : base(definition)
 {
     Syntax         = definition.Syntax;
     Index          = index;
     CapturedValues = groups.Cast <Group>().Skip(1).Select(x => x.Value);
 }
예제 #2
0
        private bool TryGetPositionMarkup(
            string markup,
            int index,
            PositionMarkupDefinition markupDefinition,
            out PositionMarkup positionMarkup,
            out TextSpan span)
        {
            var currentMarkup = markup.Substring(0, index + 1);

            // Note: syntax with regex currently does not exist, but allow it in the future
            Match match;

            if ((match = Regex.Match(currentMarkup, $"{Regex.Escape(markupDefinition.Syntax)}$")).Success)
            {
                span           = GetTextSpanForSyntax(index, match.Value);
                positionMarkup = new PositionMarkup(markupDefinition, span.Start, match.Groups);
                return(true);
            }

            // Use defaults (values shouldn't be used)
            span           = default(TextSpan);
            positionMarkup = null;

            return(false);
        }