Exemple #1
0
        private MdNode GetInnerNodes()
        {
            var mdNode = new MdNode(currentMdTag);
            var tags   = currentMdTag.GetInnerTags;

            var tagToPosition = new Dictionary <string, int>();

            currentPosition += currentMdTag.TagName.Length;
            var innerTag = TagHelper.DetermineCurrentTag(sourceString, currentPosition, tags);

            tagToPosition.Add(innerTag.TagName, currentPosition);
            currentPosition += innerTag.TagName.Length;
            for (var i = currentPosition; i < sourceString.Length; i++)
            {
                if (tagToPosition.Count == 0 && currentMdTag.IsStartedPositionTagEnd(sourceString, i))
                {
                    currentPosition = i + currentMdTag.TagName.Length;
                    return(mdNode);
                }
                if (tagToPosition.Count == 0)
                {
                    innerTag = TagHelper.DetermineCurrentTag(sourceString, currentPosition, tags);
                    tagToPosition.Add(innerTag.TagName, currentPosition);
                    i += innerTag.TagName.Length;
                }
                if (innerTag.IsStartedPositionTagEnd(sourceString, i))
                {
                    AddInnerMdNode(tagToPosition, innerTag, i, mdNode);
                    tagToPosition.Remove(innerTag.TagName);
                }
            }
            if (tagToPosition.Count != 0)
            {
                AddNotClosedInnerTag(tagToPosition, innerTag, mdNode);
            }
            currentPosition = sourceString.Length;
            return(mdNode);
        }