3 namespace RemexHtml\TreeBuilder;
4 use RemexHtml\Tokenizer\Attributes;
7 * The "in select in table" insertion mode
9 class InSelectInTable extends InsertionMode {
10 public function characters( $text, $start, $length, $sourceStart, $sourceLength ) {
11 $this->dispatcher->inSelect->characters(
12 $text, $start, $length, $sourceStart, $sourceLength );
15 public function startTag( $name, Attributes $attrs, $selfClose, $sourceStart, $sourceLength ) {
16 $builder = $this->builder;
17 $stack = $builder->stack;
18 $dispatcher = $this->dispatcher;
29 $builder->error( "unexpected <$name> in select in table, closing select",
31 $builder->popAllUpToName( 'select', $sourceStart, 0 );
33 ->startTag( $name, $attrs, $selfClose, $sourceStart, $sourceLength );
37 $dispatcher->inSelect->startTag(
38 $name, $attrs, $selfClose, $sourceStart, $sourceLength );
42 public function endTag( $name, $sourceStart, $sourceLength ) {
43 $builder = $this->builder;
44 $stack = $builder->stack;
45 $dispatcher = $this->dispatcher;
56 if ( !$stack->isInTableScope( $name ) ) {
57 $builder->error( "unexpected </$name> in select in table, ignoring",
61 $builder->error( "unexpected </$name> in select in table, closing select",
63 $builder->popAllUpToName( 'select', $sourceStart, 0 );
65 ->endTag( $name, $sourceStart, $sourceLength );
69 $dispatcher->inSelect->endTag( $name, $sourceStart, $sourceLength );
73 public function endDocument( $pos ) {
74 $this->dispatcher->inSelect->endDocument( $pos );