builder->pendingTableCharacters[] = [
$text, $start, $length, $sourceStart, $sourceLength ];
};
if ( !$this->builder->ignoreNulls ) {
$this->stripNulls( $handleNonNull, $text, $start, $length,
$sourceStart, $sourceLength );
} else {
$handleNonNull( $text, $start, $length, $sourceStart, $sourceLength );
}
}
public function doctype( $name, $public, $system, $quirks, $sourceStart, $sourceLength ) {
$this->processPendingCharacters();
$this->dispatcher->restoreMode()
->doctype( $name, $public, $system, $quirks, $sourceStart, $sourceLength );
}
public function comment( $text, $sourceStart, $sourceLength ) {
$this->processPendingCharacters();
$this->dispatcher->restoreMode()
->comment( $text, $sourceStart, $sourceLength );
}
public function startTag( $name, Attributes $attrs, $selfClose, $sourceStart, $sourceLength ) {
$this->processPendingCharacters();
$this->dispatcher->restoreMode()
->startTag( $name, $attrs, $selfClose, $sourceStart, $sourceLength );
}
public function endTag( $name, $sourceStart, $sourceLength ) {
$this->processPendingCharacters();
$this->dispatcher->restoreMode()
->endTag( $name, $sourceStart, $sourceLength );
}
public function endDocument( $pos ) {
$this->processPendingCharacters();
$this->dispatcher->restoreMode()
->endDocument( $pos );
}
/**
* Common code for the "anything else" case. Process the pending table
* character tokens.
*/
protected function processPendingCharacters() {
$builder = $this->builder;
$allSpace = true;
foreach ( $builder->pendingTableCharacters as $token ) {
list( $text, $start, $length, $sourceStart, $sourceLength ) = $token;
if ( strspn( $text, "\t\n\f\r ", $start, $length ) !== $length ) {
$allSpace = false;
}
}
if ( $allSpace ) {
foreach ( $builder->pendingTableCharacters as $token ) {
list( $text, $start, $length, $sourceStart, $sourceLength ) = $token;
$builder->insertCharacters( $text, $start, $length, $sourceStart, $sourceLength );
}
} else {
$builder->fosterParenting = true;
foreach ( $builder->pendingTableCharacters as $token ) {
list( $text, $start, $length, $sourceStart, $sourceLength ) = $token;
$builder->error( 'invalid characters in table text, fostering', $sourceStart );
$this->dispatcher->inBody->characters( $text, $start, $length,
$sourceStart, $sourceLength );
}
$builder->fosterParenting = false;
}
}
}