示例#1
0
        protected override EMTaggedElementMatch CreateElement(string text, ITagMatch start, ITagMatch end)
        {
            var tagElement = base.CreateElement(text, start, end);

            var mStart = start as EMMarkdownAndHTMLStartTagMatch;

            if (!spanParser && !tagElement.Text.Contains("\n"))
            {
                return(null);
            }

            return(mStart.IsHTMLTag
                ? (EMTaggedElementMatch)
                   new EMRawHTMLMatch(
                       tagElement.Index,
                       tagElement.Text,
                       mStart.Name,
                       tagElement.ContentStart,
                       tagElement.ContentLength,
                       mStart.AttributesString)
                : new EMMarkdownTaggedElementMatch(
                       tagElement.Index,
                       tagElement.Text,
                       mStart.Name,
                       tagElement.ContentStart,
                       tagElement.ContentLength,
                       mStart.AttributesString));
        }
示例#2
0
        protected override bool VerifyMatch(string text, ITagMatch start, ITagMatch end)
        {
            var mStart = start as EMMarkdownAndHTMLStartTagMatch;
            var mEnd   = end as EMMarkdownAndHTMLEndTagMatch;

            return(mStart.IsHTMLTag == mEnd.IsHTMLTag && string.Equals(mStart.Name, mEnd.Name, StringComparison.InvariantCultureIgnoreCase));
        }
        protected override EMTaggedElementMatch CreateElement(string text, ITagMatch start, ITagMatch end)
        {
            var tagElement = base.CreateElement(text, start, end);

            var mStart = start as EMMarkdownAndHTMLStartTagMatch;

            if (!spanParser && !tagElement.Text.Contains("\n"))
            {
                return null;
            }

            return mStart.IsHTMLTag
                ? (EMTaggedElementMatch)
                new EMRawHTMLMatch(
                    tagElement.Index,
                    tagElement.Text,
                    mStart.Name,
                    tagElement.ContentStart,
                    tagElement.ContentLength,
                    mStart.AttributesString)
                : new EMMarkdownTaggedElementMatch(
                    tagElement.Index,
                    tagElement.Text,
                    mStart.Name,
                    tagElement.ContentStart,
                    tagElement.ContentLength,
                    mStart.AttributesString);
        }
示例#4
0
        public void ValidateStartTest()
        {
            tagmatch = new TagMatch();
            var tagname = tagmatch.TagName("<Aa>asdh fkahds</aa>");

            Assert.AreEqual("Aa", tagname);
        }
示例#5
0
        protected override bool VerifyMatch(string text, ITagMatch start, ITagMatch end)
        {
            if (start is EMBracketedStart && end is EMBracketedEnd)
            {
                if (end.Text == "]")
                {
                    return(text.IndexOf(" ", start.Index, end.Index - start.Index) == -1);
                }

                return(true);
            }

            if (start is EMDecorationTag && end is EMDecorationTag)
            {
                var decorStart = start as EMDecorationTag;
                var decorEnd   = end as EMDecorationTag;

                if (decorStart.Type != decorEnd.Type || decorStart.Text[0] != decorEnd.Text[0])
                {
                    return(false);
                }

                return(true);
            }

            return(false);
        }
示例#6
0
        protected override bool VerifyMatch(string text, ITagMatch start, ITagMatch end)
        {
            if (start is EMBracketedStart && end is EMBracketedEnd)
            {
                if (end.Text == "]")
                {
                    return text.IndexOf(" ", start.Index, end.Index - start.Index) == -1;
                }

                return true;
            }

            if (start is EMDecorationTag && end is EMDecorationTag)
            {
                var decorStart = start as EMDecorationTag;
                var decorEnd = end as EMDecorationTag;

                if (decorStart.Type != decorEnd.Type || decorStart.Text[0] != decorEnd.Text[0])
                {
                    return false;
                }

                return true;
            }

            return false;
        }
示例#7
0
        public void ExtractTopLevelsTagsTest()
        {
            tagmatch = new TagMatch();
            var tags = tagmatch.AllTopLevelTags("<Aa>asdh fkahds</aa>asdfasd<bbc>asd asdfasdf<CC>asdfa</CC></bbc>");

            //var tags = tagmatch.AllTopLevelTags("<aa>asdh fkahds</aa>");
            Assert.AreEqual(2, tags.Count());
        }
示例#8
0
        public void TagMatchValidEndTest()
        {
            tagmatch          = new TagMatch();
            tagmatch.tag      = "FlowDocument";
            tagmatch.inputStr = "<FlowDocument><Paragraph><Bold>Some bold text in the paragraph.</Bold>Some text that is not bold. </ Paragraph >  </FlowDocument>";
            bool hasValidEnd = tagmatch.ValidateEnd();

            Assert.IsTrue(hasValidEnd);
        }
示例#9
0
        public void ExtractBodyTest()
        {
            tagmatch          = new TagMatch();
            tagmatch.tag      = "FlowDocument";
            tagmatch.inputStr = "<FlowDocument><Paragraph><Bold>Some bold text in the paragraph.</Bold>Some text that is not bold. </ Paragraph >  </FlowDocument>";
            string body = tagmatch.ExtractBody();

            Assert.AreEqual("<Paragraph><Bold>Some bold text in the paragraph.</Bold>Some text that is not bold. </ Paragraph >  ", body);
        }
示例#10
0
        public void ExtractAllTagObjectsTest()
        {
            tagmatch          = new TagMatch();
            tagmatch.tag      = "Paragraph";
            tagmatch.inputStr = "<FlowDocument><Paragraph><Bold>Some bold text in the paragraph.</Bold>Some text that is not bold. </ Paragraph >  </FlowDocument>";
            var paragraps = tagmatch.ExtractAllTagObjects(tagmatch.inputStr);

            Assert.IsTrue(paragraps.Count() == 1);
        }
示例#11
0
        protected override EMTaggedElementMatch CreateNoEndElement(ITagMatch start)
        {
            var mStart = start as EMMarkdownAndHTMLStartTagMatch;

            return(mStart.IsMarkdownTag
                ? (EMTaggedElementMatch)
                   new EMMarkdownTaggedElementMatch(
                       start.Index, start.Text, mStart.Name, 0, 0, mStart.AttributesString)
                : new EMRawHTMLMatch(
                       start.Index, start.Text, mStart.Name, 0, 0, mStart.AttributesString));
        }
示例#12
0
        private string GetErrorString(ITagMatch tag)
        {
            if (getLocationDelegate != null)
            {
                var pos = getLocationDelegate(tag.Index);

                return(string.Format("'{0}' at {1}:{2}", tag.Text, pos.Line, pos.Column));
            }

            return(tag.Text);
        }
示例#13
0
        protected override EMTaggedElementMatch CreateElement(string text, ITagMatch start, ITagMatch end)
        {
            var tagged = base.CreateElement(text, start, end);

            if (start is EMBracketedStartOrEndTag)
            {
                return new EMBracketedImagesAndLinksMatch(tagged, (end as EMBracketedEnd).Params);
            }

            if (start is EMDecorationTag)
            {
                return new EMDecorationMatch(tagged, (start as EMDecorationTag).Type);
            }

            throw new InvalidOperationException("Should not happend!");
        }
示例#14
0
        protected override EMTaggedElementMatch CreateElement(string text, ITagMatch start, ITagMatch end)
        {
            var tagged = base.CreateElement(text, start, end);

            if (start is EMBracketedStartOrEndTag)
            {
                return(new EMBracketedImagesAndLinksMatch(tagged, (end as EMBracketedEnd).Params));
            }

            if (start is EMDecorationTag)
            {
                return(new EMDecorationMatch(tagged, (start as EMDecorationTag).Type));
            }

            throw new InvalidOperationException("Should not happend!");
        }
示例#15
0
        private ITagMatch NonstrickStartTagSearch(Stack <ITagMatch> startsStack, ITagMatch end, string text)
        {
            ITagMatch start = null;

            foreach (var potentialStart in startsStack)
            {
                if (VerifyMatch(text, potentialStart, end))
                {
                    start = potentialStart;
                    break;
                }
            }

            if (start != null)
            {
                while (start != startsStack.Pop())
                {
                }
            }

            return(start);
        }
示例#16
0
 protected virtual EMTaggedElementMatch CreateNoEndElement(ITagMatch start)
 {
     return(new EMTaggedElementMatch(start.Index, start.Text, 0, 0));
 }
示例#17
0
        protected virtual EMTaggedElementMatch CreateElement(string text, ITagMatch start, ITagMatch end)
        {
            var originText = text.Substring(start.Index, end.Index - start.Index + end.Length);

            return(new EMTaggedElementMatch(start.Index, originText, start.Length, end.Index - start.Index - start.Length));
        }
示例#18
0
 protected virtual bool VerifyMatch(string text, ITagMatch start, ITagMatch end)
 {
     // Matched by default.
     return(true);
 }
示例#19
0
 protected override EMTaggedElementMatch CreateNoEndElement(ITagMatch start)
 {
     throw new NotSupportedException("Bracketed images, links or decorations have to be ended.");
 }
        protected virtual EMTaggedElementMatch CreateElement(string text, ITagMatch start, ITagMatch end)
        {
            var originText = text.Substring(start.Index, end.Index - start.Index + end.Length);

            return new EMTaggedElementMatch(start.Index, originText, start.Length, end.Index - start.Index - start.Length);
        }
 protected virtual bool VerifyMatch(string text, ITagMatch start, ITagMatch end)
 {
     // Matched by default.
     return true;
 }
        private ITagMatch NonstrickStartTagSearch(Stack<ITagMatch> startsStack, ITagMatch end, string text)
        {
            ITagMatch start = null;

            foreach (var potentialStart in startsStack)
            {
                if (VerifyMatch(text, potentialStart, end))
                {
                    start = potentialStart;
                    break;
                }
            }

            if (start != null)
            {
                while (start != startsStack.Pop())
                {
                }
            }

            return start;
        }
        private string GetErrorString(ITagMatch tag)
        {
            if (getLocationDelegate != null)
            {
                var pos = getLocationDelegate(tag.Index);

                return string.Format("'{0}' at {1}:{2}", tag.Text, pos.Line, pos.Column);
            }

            return tag.Text;
        }
        protected override EMTaggedElementMatch CreateNoEndElement(ITagMatch start)
        {
            var mStart = start as EMMarkdownAndHTMLStartTagMatch;

            return mStart.IsMarkdownTag
                ? (EMTaggedElementMatch)
                new EMMarkdownTaggedElementMatch(
                    start.Index, start.Text, mStart.Name, 0, 0, mStart.AttributesString)
                : new EMRawHTMLMatch(
                    start.Index, start.Text, mStart.Name, 0, 0, mStart.AttributesString);
        }
        protected override bool VerifyMatch(string text, ITagMatch start, ITagMatch end)
        {
            var mStart = start as EMMarkdownAndHTMLStartTagMatch;
            var mEnd = end as EMMarkdownAndHTMLEndTagMatch;

            return mStart.IsHTMLTag == mEnd.IsHTMLTag && string.Equals(mStart.Name, mEnd.Name, StringComparison.InvariantCultureIgnoreCase);
        }
示例#26
0
 protected override EMTaggedElementMatch CreateNoEndElement(ITagMatch start)
 {
     throw new NotSupportedException("Bracketed images, links or decorations have to be ended.");
 }
示例#27
0
 public void TagMatchCreationTest()
 {
     tagmatch = new TagMatch();
     Assert.IsNotNull(tagmatch);
 }
 protected virtual EMTaggedElementMatch CreateNoEndElement(ITagMatch start)
 {
     return new EMTaggedElementMatch(start.Index, start.Text, 0, 0);
 }