Пример #1
0
 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)
     {
         Supremes.Nodes.Tag tag = new Supremes.Nodes.Tag(tagName);
         Register(tag);
     }
     foreach (string tagName_1 in inlineTags)
     {
         Supremes.Nodes.Tag tag = new Supremes.Nodes.Tag(tagName_1);
         tag.isBlock            = false;
         tag.canContainBlock    = false;
         tag.isFormattedAsBlock = false;
         Register(tag);
     }
     // mods:
     foreach (string tagName_2 in emptyTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_2];
         Validate.NotNull(tag);
         tag.canContainBlock  = false;
         tag.canContainInline = false;
         tag.empty            = true;
     }
     foreach (string tagName_3 in formatAsInlineTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_3];
         Validate.NotNull(tag);
         tag.isFormattedAsBlock = false;
     }
     foreach (string tagName_4 in preserveWhitespaceTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_4];
         Validate.NotNull(tag);
         tag.preservesWhitespace = true;
     }
     foreach (string tagName_5 in formListedTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_5];
         Validate.NotNull(tag);
         tag.formList = true;
     }
     foreach (string tagName_6 in formSubmitTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_6];
         Validate.NotNull(tag);
         tag.formSubmit = true;
     }
 }
Пример #2
0
 /// <summary>
 /// Compares two <see cref="Tag"/> instances for equality.
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public override bool Equals(object obj)
 {
     if (this == obj)
     {
         return(true);
     }
     Supremes.Nodes.Tag tag = obj as Supremes.Nodes.Tag;
     if (tag == null)
     {
         return(false);
     }
     if (canContainBlock != tag.canContainBlock)
     {
         return(false);
     }
     if (canContainInline != tag.canContainInline)
     {
         return(false);
     }
     if (empty != tag.empty)
     {
         return(false);
     }
     if (isFormattedAsBlock != tag.isFormattedAsBlock)
     {
         return(false);
     }
     if (isBlock != tag.isBlock)
     {
         return(false);
     }
     if (preservesWhitespace != tag.preservesWhitespace)
     {
         return(false);
     }
     if (selfClosing != tag.selfClosing)
     {
         return(false);
     }
     if (formList != tag.formList)
     {
         return(false);
     }
     if (formSubmit != tag.formSubmit)
     {
         return(false);
     }
     if (!tagName.Equals(tag.tagName))
     {
         return(false);
     }
     return(true);
 }
Пример #3
0
 /// <summary>
 /// Get a Tag by name.
 /// </summary>
 /// <remarks>
 /// If not previously defined (unknown), returns a new generic tag, that can do anything.
 /// <p/>
 /// 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 Supremes.Nodes.Tag ValueOf(string tagName)
 {
     Validate.NotNull(tagName);
     Supremes.Nodes.Tag tag;
     if (!tags.TryGetValue(tagName, out tag))
     {
         tagName = tagName.Trim().ToLower();
         Validate.NotEmpty(tagName);
         if (!tags.TryGetValue(tagName, out tag))
         {
             // not defined: create default; go anywhere, do anything! (incl be inside a <p>)
             tag                 = new Supremes.Nodes.Tag(tagName);
             tag.isBlock         = false;
             tag.canContainBlock = true;
         }
     }
     return(tag);
 }
Пример #4
0
 /// <summary>
 /// Get a Tag by name.
 /// </summary>
 /// <remarks>
 /// If not previously defined (unknown), returns a new generic tag, that can do anything.
 /// <p/>
 /// 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 Supremes.Nodes.Tag ValueOf(string tagName)
 {
     Validate.NotNull(tagName);
     Supremes.Nodes.Tag tag;
     if (!tags.TryGetValue(tagName, out tag))
     {
         tagName = tagName.Trim().ToLower();
         Validate.NotEmpty(tagName);
         if (!tags.TryGetValue(tagName, out tag))
         {
             // not defined: create default; go anywhere, do anything! (incl be inside a <p>)
             tag = new Supremes.Nodes.Tag(tagName);
             tag.isBlock = false;
             tag.canContainBlock = true;
         }
     }
     return tag;
 }
Пример #5
0
 private static void Register(Supremes.Nodes.Tag tag)
 {
     tags[tag.tagName] = tag;
 }
Пример #6
0
 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)
     {
         Supremes.Nodes.Tag tag = new Supremes.Nodes.Tag(tagName);
         Register(tag);
     }
     foreach (string tagName_1 in inlineTags)
     {
         Supremes.Nodes.Tag tag = new Supremes.Nodes.Tag(tagName_1);
         tag.isBlock = false;
         tag.canContainBlock = false;
         tag.isFormattedAsBlock = false;
         Register(tag);
     }
     // mods:
     foreach (string tagName_2 in emptyTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_2];
         Validate.NotNull(tag);
         tag.canContainBlock = false;
         tag.canContainInline = false;
         tag.empty = true;
     }
     foreach (string tagName_3 in formatAsInlineTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_3];
         Validate.NotNull(tag);
         tag.isFormattedAsBlock = false;
     }
     foreach (string tagName_4 in preserveWhitespaceTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_4];
         Validate.NotNull(tag);
         tag.preservesWhitespace = true;
     }
     foreach (string tagName_5 in formListedTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_5];
         Validate.NotNull(tag);
         tag.formList = true;
     }
     foreach (string tagName_6 in formSubmitTags)
     {
         Supremes.Nodes.Tag tag = tags[tagName_6];
         Validate.NotNull(tag);
         tag.formSubmit = true;
     }
 }