%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/vendor/wikimedia/remex-html/RemexHtml/Tokenizer/ |
Current File : //www/varak.net/wiki.varak.net/vendor/wikimedia/remex-html/RemexHtml/Tokenizer/TokenSerializer.php |
<?php namespace RemexHtml\Tokenizer; /** * A simple serializer for the token stream, mostly meant for debugging. */ class TokenSerializer implements TokenHandler { private $output; private $errors = []; public function getOutput() { return $this->output; } public function getErrors() { return $this->errors; } public function startDocument( Tokenizer $tokenizer, $fns, $fn ) { $this->output = ''; } public function endDocument( $pos ) { } public function error( $text, $pos ) { $this->errors[] = [ $text, $pos ]; } public function characters( $text, $start, $length, $sourceStart, $sourceLength ) { $this->output .= htmlspecialchars( substr( $text, $start, $length ) ); } public function startTag( $name, Attributes $attrs, $selfClose, $sourceStart, $sourceLength ) { $attrs = $attrs->getValues(); $this->output .= "<$name"; foreach ( $attrs as $name => $value ) { $this->output .= " $name=\"" . str_replace( '"', '"', $value ) . '"'; } if ( $selfClose ) { $this->output .= ' /'; } $this->output .= '>'; } public function endTag( $name, $sourceStart, $sourceLength ) { $this->output .= "</$name>"; } public function doctype( $name, $public, $system, $quirks, $sourceStart, $sourceLength ) { $this->output .= "<!DOCTYPE $name"; if ( strlen( $public ) ) { $this->output .= " PUBLIC \"$public\""; if ( strlen( $system ) ) { $this->output .= " \"$system\""; } } elseif ( strlen( $system ) ) { $this->output .= " SYSTEM \"$system\""; } $this->output .= '>'; if ( $quirks ) { $this->output .= '<!--quirks-->'; } } public function comment( $text, $sourceStart, $sourceLength ) { $this->output .= '<!--' . $text . '-->'; } }