Exemplo n.º 1
0
 internal override bool Process(Token t, HtmlTreeBuilder tb)
 {
     if (HtmlTreeBuilderState.IsWhitespace(t))
     {
         tb.Insert(t.AsCharacter());
     }
     else if (t.IsComment())
     {
         tb.Insert(t.AsComment());
     }
     else if (t.IsDoctype())
     {
         tb.Error(this);
         return false;
     }
     else if (t.IsStartTag())
     {
         Token.StartTag start = t.AsStartTag();
         string name = start.Name();
         if (name.Equals("html"))
         {
             return tb.Process(start, HtmlTreeBuilderState.InBody);
         }
         else if (name.Equals("frameset"))
         {
             tb.Insert(start);
         }
         else if (name.Equals("frame"))
         {
             tb.InsertEmpty(start);
         }
         else if (name.Equals("noframes"))
         {
             return tb.Process(start, HtmlTreeBuilderState.InHead);
         }
         else
         {
             tb.Error(this);
             return false;
         }
     }
     else if (t.IsEndTag() && t.AsEndTag().Name().Equals("frameset"))
     {
         if (tb.CurrentElement().NodeName.Equals("html"))
         {
             // frag
             tb.Error(this);
             return false;
         }
         else
         {
             tb.Pop();
             if (!tb.IsFragmentParsing() && !tb.CurrentElement().NodeName.Equals("frameset"))
             {
                 tb.Transition(HtmlTreeBuilderState.AfterFrameset);
             }
         }
     }
     else if (t.IsEOF())
     {
         if (!tb.CurrentElement().NodeName.Equals("html"))
         {
             tb.Error(this);
             return true;
         }
     }
     else
     {
         tb.Error(this);
         return false;
     }
     return true;
 }
Exemplo n.º 2
0
 internal override bool Process(Token t, HtmlTreeBuilder tb)
 {
     if (HtmlTreeBuilderState.IsWhitespace(t))
     {
         return tb.Process(t, HtmlTreeBuilderState.InBody);
     }
     else if (t.IsComment())
     {
         tb.Insert(t.AsComment());
         // into html node
     }
     else if (t.IsDoctype())
     {
         tb.Error(this);
         return false;
     }
     else if (t.IsStartTag() && t.AsStartTag().Name().Equals("html"))
     {
         return tb.Process(t, HtmlTreeBuilderState.InBody);
     }
     else if (t.IsEndTag() && t.AsEndTag().Name().Equals("html"))
     {
         if (tb.IsFragmentParsing())
         {
             tb.Error(this);
             return false;
         }
         else
         {
             tb.Transition(HtmlTreeBuilderState.AfterAfterBody);
         }
     }
     else if (t.IsEOF())
     {
         // chillax! we're done
     }
     else
     {
         tb.Error(this);
         tb.Transition(HtmlTreeBuilderState.InBody);
         return tb.Process(t);
     }
     return true;
 }