예제 #1
0
            public override bool Process(Token t, HtmlTreeBuilder tb)
            {
                switch (t.Type)
                {
                case TokenType.Character:
                    Token.Character c = t.AsCharacter();
                    if (c.Data.Equals(NullString))
                    {
                        tb.Error(this);
                        return(false);
                    }
                    else
                    {
                        tb.GetPendingTableCharacters().Add(c);
                    }
                    break;

                default:
                    if (tb.GetPendingTableCharacters().Count > 0)
                    {
                        foreach (Token.Character char2 in tb.GetPendingTableCharacters())
                        {
                            if (!IsWhitespace(char2))
                            {
                                // InTable anything else section:
                                tb.Error(this);

                                if (StringUtil.In(tb.CurrentElement.NodeName, "table", "tbody", "tfoot", "thead", "tr"))
                                {
                                    tb.SetFosterInserts(true);
                                    tb.Process(char2, InBody);
                                    tb.SetFosterInserts(false);
                                }
                                else
                                {
                                    tb.Process(char2, InBody);
                                }
                            }
                            else
                            {
                                tb.Insert(char2);
                            }
                        }
                        tb.NewPendingTableCharacters();
                    }
                    tb.Transition(tb.OriginalState);
                    return(tb.Process(t));
                }

                return(true);
            }