public virtual void Equality() { iText.StyledXmlParser.Jsoup.Parser.Tag p1 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("p"); iText.StyledXmlParser.Jsoup.Parser.Tag p2 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("p"); NUnit.Framework.Assert.IsTrue(p1.Equals(p2)); NUnit.Framework.Assert.IsTrue(p1 == p2); }
public virtual void ImgSemantics() { iText.StyledXmlParser.Jsoup.Parser.Tag img = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("img"); NUnit.Framework.Assert.IsTrue(img.IsInline()); NUnit.Framework.Assert.IsTrue(img.IsSelfClosing()); NUnit.Framework.Assert.IsFalse(img.IsBlock()); }
internal virtual iText.StyledXmlParser.Jsoup.Nodes.Element InsertEmpty(Token.StartTag startTag) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(startTag.Name( )); iText.StyledXmlParser.Jsoup.Nodes.Element el = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, baseUri, startTag.attributes); InsertNode(el); if (startTag.IsSelfClosing()) { if (tag.IsKnownTag()) { if (tag.IsSelfClosing()) { tokeniser.AcknowledgeSelfClosingFlag(); } } else { // if not acked, promulagates error // unknown tag, remember this is self closing for output tag.SetSelfClosing(); tokeniser.AcknowledgeSelfClosingFlag(); } } // not an distinct error return(el); }
public virtual void DefaultSemantics() { iText.StyledXmlParser.Jsoup.Parser.Tag foo = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("foo"); // not defined iText.StyledXmlParser.Jsoup.Parser.Tag foo2 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("FOO"); NUnit.Framework.Assert.AreEqual(foo, foo2); NUnit.Framework.Assert.IsTrue(foo.IsInline()); NUnit.Framework.Assert.IsTrue(foo.FormatAsBlock()); }
static Tag() { // internal static initialisers: // prepped from http://www.w3.org/TR/REC-html40/sgml/dtd.html and other sources // script is not here as it is a data node, which always preserve whitespace // todo: I think we just need submit tags, and can scrub listed // creates foreach (String tagName in blockTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = new iText.StyledXmlParser.Jsoup.Parser.Tag(tagName); Register(tag); } foreach (String tagName in inlineTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = new iText.StyledXmlParser.Jsoup.Parser.Tag(tagName); tag.isBlock = false; tag.canContainBlock = false; tag.formatAsBlock = false; Register(tag); } // mods: foreach (String tagName in emptyTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.canContainBlock = false; tag.canContainInline = false; tag.empty = true; } foreach (String tagName in formatAsInlineTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.formatAsBlock = false; } foreach (String tagName in preserveWhitespaceTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.preserveWhitespace = true; } foreach (String tagName in formListedTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.formList = true; } foreach (String tagName in formSubmitTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.formSubmit = true; } }
internal virtual FormElement InsertForm(Token.StartTag startTag, bool onStack) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(startTag.Name( )); FormElement el = new FormElement(tag, baseUri, startTag.attributes); SetFormElement(el); InsertNode(el); if (onStack) { stack.Add(el); } return(el); }
static Tag() { // creates foreach (String tagName in blockTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = new iText.StyledXmlParser.Jsoup.Parser.Tag(tagName); Register(tag); } foreach (String tagName in inlineTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = new iText.StyledXmlParser.Jsoup.Parser.Tag(tagName); tag.isBlock = false; tag.canContainBlock = false; tag.formatAsBlock = false; Register(tag); } // mods: foreach (String tagName in emptyTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.canContainBlock = false; tag.canContainInline = false; tag.empty = true; } foreach (String tagName in formatAsInlineTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.formatAsBlock = false; } foreach (String tagName in preserveWhitespaceTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.preserveWhitespace = true; } foreach (String tagName in formListedTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.formList = true; } foreach (String tagName in formSubmitTags) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); Validate.NotNull(tag); tag.formSubmit = true; } }
public override bool Equals(Object o) { if (this == o) { return(true); } if (!(o is iText.StyledXmlParser.Jsoup.Parser.Tag)) { return(false); } iText.StyledXmlParser.Jsoup.Parser.Tag tag = (iText.StyledXmlParser.Jsoup.Parser.Tag)o; if (!tagName.Equals(tag.tagName)) { return(false); } if (canContainBlock != tag.canContainBlock) { return(false); } if (canContainInline != tag.canContainInline) { return(false); } if (empty != tag.empty) { return(false); } if (formatAsBlock != tag.formatAsBlock) { return(false); } if (isBlock != tag.isBlock) { return(false); } if (preserveWhitespace != tag.preserveWhitespace) { return(false); } if (selfClosing != tag.selfClosing) { return(false); } if (formList != tag.formList) { return(false); } return(formSubmit == tag.formSubmit); }
/// <summary>Get a Tag by name.</summary> /// <remarks> /// Get a Tag by name. If not previously defined (unknown), returns a new generic tag, that can do anything. /// <para /> /// Pre-defined tags (P, DIV etc) will be ==, but unknown tags are not registered and will only .equals(). /// </remarks> /// <param name="tagName">Name of tag, e.g. "p". Case insensitive.</param> /// <returns>The tag, either defined or new generic.</returns> public static iText.StyledXmlParser.Jsoup.Parser.Tag ValueOf(String tagName) { Validate.NotNull(tagName); iText.StyledXmlParser.Jsoup.Parser.Tag tag = tags.Get(tagName); if (tag == null) { tagName = tagName.Trim().ToLowerInvariant(); Validate.NotEmpty(tagName); tag = tags.Get(tagName); if (tag == null) { // not defined: create default; go anywhere, do anything! (incl be inside a <p>) tag = new iText.StyledXmlParser.Jsoup.Parser.Tag(tagName); tag.isBlock = false; tag.canContainBlock = true; } } return(tag); }
internal virtual iText.StyledXmlParser.Jsoup.Nodes.Element Insert(Token.StartTag startTag) { iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(startTag.Name( )); // todo: wonder if for xml parsing, should treat all tags as unknown? because it's not html. iText.StyledXmlParser.Jsoup.Nodes.Element el = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, baseUri, startTag.attributes); InsertNode(el); if (startTag.IsSelfClosing()) { tokeniser.AcknowledgeSelfClosingFlag(); if (!tag.IsKnownTag()) { // unknown tag, remember this is self closing for output. see above. tag.SetSelfClosing(); } } else { stack.Add(el); } return(el); }
public virtual void HandlesBaseUri() { iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("a"); Attributes attribs = new Attributes(); attribs.Put("relHref", "/foo"); attribs.Put("absHref", "http://bar/qux"); iText.StyledXmlParser.Jsoup.Nodes.Element noBase = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, "", attribs); NUnit.Framework.Assert.AreEqual("", noBase.AbsUrl("relHref")); // with no base, should NOT fallback to href attrib, whatever it is NUnit.Framework.Assert.AreEqual("http://bar/qux", noBase.AbsUrl("absHref")); // no base but valid attrib, return attrib iText.StyledXmlParser.Jsoup.Nodes.Element withBase = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, "http://foo/" , attribs); NUnit.Framework.Assert.AreEqual("http://foo/foo", withBase.AbsUrl("relHref")); // construct abs from base + rel NUnit.Framework.Assert.AreEqual("http://bar/qux", withBase.AbsUrl("absHref")); // href is abs, so returns that NUnit.Framework.Assert.AreEqual("", withBase.AbsUrl("noval")); iText.StyledXmlParser.Jsoup.Nodes.Element dodgyBase = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, "wtf://no-such-protocol/" , attribs); NUnit.Framework.Assert.AreEqual("http://bar/qux", dodgyBase.AbsUrl("absHref")); }
public virtual void PSemantics() { iText.StyledXmlParser.Jsoup.Parser.Tag p = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("p"); NUnit.Framework.Assert.IsTrue(p.IsBlock()); NUnit.Framework.Assert.IsFalse(p.FormatAsBlock()); }
public virtual void DivSemantics() { iText.StyledXmlParser.Jsoup.Parser.Tag div = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("div"); NUnit.Framework.Assert.IsTrue(div.IsBlock()); NUnit.Framework.Assert.IsTrue(div.FormatAsBlock()); }
public virtual void Trims() { iText.StyledXmlParser.Jsoup.Parser.Tag p1 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("p"); iText.StyledXmlParser.Jsoup.Parser.Tag p2 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(" p "); NUnit.Framework.Assert.AreEqual(p1, p2); }
public virtual void IsCaseInsensitive() { iText.StyledXmlParser.Jsoup.Parser.Tag p1 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("P"); iText.StyledXmlParser.Jsoup.Parser.Tag p2 = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("p"); NUnit.Framework.Assert.AreEqual(p1, p2); }
/// <summary>Create a new, standalone form element.</summary> /// <param name="tag">tag of this element</param> /// <param name="baseUri">the base URI</param> /// <param name="attributes">initial attributes</param> public FormElement(iText.StyledXmlParser.Jsoup.Parser.Tag tag, String baseUri, Attributes attributes) : base(tag, baseUri, attributes) { }
private static void Register(iText.StyledXmlParser.Jsoup.Parser.Tag tag) { tags.Put(tag.tagName, tag); }