コード例 #1
0
        public TokenMd GetToken(string text, int index, out int finalIndex)
        {
            var isEnd = false;

            helper = new ParseHelper();
            mark   = new ItalicMark();
            var builder = new StringBuilder();

            finalIndex = index;

            builder = helper.AppendMarkSymbols(builder, text, finalIndex, out finalIndex, mark.DefiningSymbol);

            while (finalIndex < text.Length && !helper.IsSymbols(finalIndex, text, Environment.NewLine) && !isEnd)
            {
                isEnd = text[finalIndex] == '_' &&
                        text[finalIndex - 1] != '_' &&
                        (finalIndex + 1 >= text.Length ||
                         finalIndex + 1 < text.Length &&
                         text[finalIndex + 1] != '_' &&
                         !char.IsWhiteSpace(text[finalIndex - 1]));

                builder = helper.AppendSymbol(builder, text, finalIndex, out finalIndex);
            }

            return(GetResultToken(builder.ToString(), isEnd));
        }