示例#1
0
        private Token ReadSingle(string input, int inputIndex)
        {
            var startIndex = inputIndex;

            if (input[inputIndex + 1] == MarkdownSymbols.Space)
            {
                return(GetTokenWithoutTags(input, startIndex, MarkdownSymbols.Emphasis, 1));
            }
            inputIndex += 1;

            inputIndex = GetTagIndexWithTrueEnviron(input, inputIndex, CheckSingleTagEnviron);
            if (inputIndex == -1)
            {
                return(GetTokenWithoutTags(input, startIndex, MarkdownSymbols.Emphasis, 1));
            }

            var fullToken = AbstractReader.Read(input, startIndex + 1, MarkdownSymbols.Emphasis);
            var resToken  = new Token(input.Substring(fullToken.StartIndex, inputIndex - fullToken.StartIndex), startIndex + 2);

            if (resToken.Text[resToken.Text.Length - 1] == MarkdownSymbols.Space)
            {
                return(new Token(MarkdownSymbols.Emphasis + fullToken.Text, startIndex));
            }

            var token = new Token(resToken.Text, startIndex + 2);

            token.Tag = TokenType.Italic;
            return(token);
        }
示例#2
0
 public Token Read(string input, int inputIndex)
 {
     if (inputIndex + 1 > input.Length - 1)
     {
         return(new Token(input.Substring(inputIndex), inputIndex));
     }
     if (char.IsDigit(input[inputIndex + 1]))
     {
         return(new Token(
                    input[0] + AbstractReader.Read(input, inputIndex + 1,
                                                   MarkdownSymbols.AllSymbols).Text,
                    inputIndex));
     }
     return(input[inputIndex + 1] != MarkdownSymbols.Emphasis ?
            ReadSingle(input, inputIndex) : ReadDouble(input, inputIndex));
 }