Esempio n. 1
0
            internal override bool Process(Token t, HtmlTreeBuilder tb)
            {
                switch (t.type)
                {
                    case TokenType.Character:
                    {
                        Token.Character c = t.AsCharacter();
                        if (c.GetData().Equals(HtmlTreeBuilderState.nullString))
                        {
                            tb.Error(this);
                            return false;
                        }
                        else
                        {
                            tb.GetPendingTableCharacters().Add(c);
                        }
                        break;
                    }

                    default:
                    {
                        if (tb.GetPendingTableCharacters().Count > 0)
                        {
                            foreach (Token.Character character in tb.GetPendingTableCharacters())
                            {
                                if (!HtmlTreeBuilderState.IsWhitespace(character))
                                {
                                    // InTable anything else section:
                                    tb.Error(this);
                                    if (StringUtil.In(tb.CurrentElement().NodeName, "table", "tbody", "tfoot", "thead", "tr"))
                                    {
                                        tb.SetFosterInserts(true);
                                        tb.Process(character, HtmlTreeBuilderState.InBody);
                                        tb.SetFosterInserts(false);
                                    }
                                    else
                                    {
                                        tb.Process(character, HtmlTreeBuilderState.InBody);
                                    }
                                }
                                else
                                {
                                    tb.Insert(character);
                                }
                            }
                            tb.NewPendingTableCharacters();
                        }
                        tb.Transition(tb.OriginalState());
                        return tb.Process(t);
                    }
                }
                return true;
            }