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)); }
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); }
public void ValidateStartTest() { tagmatch = new TagMatch(); var tagname = tagmatch.TagName("<Aa>asdh fkahds</aa>"); Assert.AreEqual("Aa", tagname); }
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); }
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; }
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()); }
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); }
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); }
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); }
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)); }
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 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!"); }
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!"); }
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); }
protected virtual EMTaggedElementMatch CreateNoEndElement(ITagMatch start) { return(new EMTaggedElementMatch(start.Index, start.Text, 0, 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)); }
protected virtual bool VerifyMatch(string text, ITagMatch start, ITagMatch end) { // Matched by default. return(true); }
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); }
public void TagMatchCreationTest() { tagmatch = new TagMatch(); Assert.IsNotNull(tagmatch); }
protected virtual EMTaggedElementMatch CreateNoEndElement(ITagMatch start) { return new EMTaggedElementMatch(start.Index, start.Text, 0, 0); }