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); }
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)); }