Ejemplo n.º 1
0
 private static int TagCost(HTMLBalancerCostFilter costFilter, ArrayList openTags, Tag tag)
 {
     try
     {
         checked
         {
             int baseTagCost = costFilter.ElementCost(tag);
             if (tag is BeginTag)
             {
                 return baseTagCost + ((TagRequiresClose(tag.Name)) ? costFilter.ElementCost(MakeEndTag(tag.Name)) : 0);
             }
             else if (tag is EndTag)
             {
                 if (LastIndexOf(openTags, tag) != -1)
                     return baseTagCost - costFilter.ElementCost(MakeEndTag(tag.Name));
                 else
                     return baseTagCost;
             }
             else
             {
                 Trace.Fail("Unknown tag type");
                 return baseTagCost;
             }
         }
     }
     catch (OverflowException)
     {
         return int.MaxValue;
     }
 }
Ejemplo n.º 2
0
 private static void RegisterTag(ArrayList openTags, Tag tag)
 {
     if (tag is BeginTag && TagRequiresClose(tag.Name))
     {
         openTags.Add(tag.Name);
     }
     else if (tag is EndTag)
     {
         int idx = LastIndexOf(openTags, tag);
         if (idx != -1)
             openTags.RemoveAt(idx);
     }
 }
Ejemplo n.º 3
0
 private static int LastIndexOf(ArrayList openTags, Tag tag)
 {
     for (int i = openTags.Count - 1; i >= 0; i--)
     {
         if (tag.NameEquals((string)openTags[i]))
         {
             return i;
         }
     }
     return -1;
 }
 private void EmitTagAndAttributes(string tagName, Tag tag)
 {
     BeginTag beginTag = tag as BeginTag;
     if (beginTag != null)
     {
         Emit(string.Format(CultureInfo.InvariantCulture, "<{0}", tagName));
         foreach (Attr attr in beginTag.Attributes)
             if (PreserveAttributes.Contains(attr.Name.ToUpper(CultureInfo.InvariantCulture)))
                 Emit(" " + attr.ToString());
         if (beginTag.Complete)
             Emit("/");
         Emit(">");
     }
     else
     {
         if (tagName.ToUpper(CultureInfo.InvariantCulture) != HTMLTokens.Br && tagName.ToUpper(CultureInfo.InvariantCulture) != HTMLTokens.Img)
             Emit(string.Format(CultureInfo.InvariantCulture, "</{0}>", tagName));
     }
 }