示例#1
0
        public static Token GetToken(TagTypeContainer closerTag, TagTypeContainer openerTag, string result)
        {
            var end = closerTag.position + closerTag.Tag.Length - 1;
            var stringValueStart = openerTag.position + openerTag.Tag.Length;
            var token            = new Token(result.ToString().Substring(stringValueStart, closerTag.position - stringValueStart),
                                             openerTag.position, end);

            return(token);
        }
示例#2
0
        private void WrapTag(TagTypeContainer typeContainer, StringBuilder result)
        {
            var token      = GetToken(typeContainer, stackTags.Peek(), result.ToString());
            var wrappedTag =
                Wrapper.WrapWithTag(
                    typeContainer.Tag,
                    token);

            result.Remove(token.Start, token.End - token.Start + 1)
            .Insert(token.Start, wrappedTag);
        }
示例#3
0
        public override bool TryGetCorrectTagContainer(int start, string input, out TagTypeContainer tagContainer,
                                                       ITag tag)
        {
            if (start != 0)
            {
                if (start + tag.Length < input.Length) // "__ "
                {
                    if (isOpen[tag.StringTag])
                    {
                        if (input[start - 1] != ' ')
                        {
                            tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // b_ closer
                            return(true);
                        }
                    }

                    if (input[start + tag.Length] != ' ')
                    {
                        tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // opener
                        return(true);
                    }
                }

                if (start + tag.Length == input.Length) //"__"
                {
                    if (isOpen[tag.StringTag])
                    {
                        if (input[start - 1] != ' ')
                        {
                            tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // closer
                            return(true);
                        }
                    }

                    tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // opener
                    return(true);
                }
            }

            if (input[start + tag.Length] != ' ')
            {
                tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // opener
                return(true);
            }

            tagContainer = null;
            return(false);
        }
示例#4
0
 public abstract bool TryGetCorrectTagContainer(int start, string input, out TagTypeContainer tagContainer,
                                                ITag tag);