%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/TokenGenerator.php |
<?php
namespace RemexHtml\Tokenizer;
/**
* This class provides a convenient iterative view of the token stream,
* implemented as a Generator. It is intended to be used as follows:
*
* foreach ( TokenGenerator::generate( $html, [] ) as $token ) {
* ...
* }
*
* Performance is slightly slower than a plain TokenHandler, probably due to
* the need to convert event parameters to associative arrays.
*/
class TokenGenerator {
protected $handler;
protected $tokenizer;
protected function __construct( $text, $options ) {
$this->handler = new TokenGeneratorHandler( $this );
$this->tokenizer = new Tokenizer( $this->handler, $text, $options );
}
/**
* Get a Generator which iterates over all tokens in the supplied HTML
*
* @param string $text The HTML
* @param array $options The Tokenizer options, see Tokenizer::__construct()
* @return Generator
*/
public static function generate( $text, $options ) {
$tg = new self( $text, $options );
$tg->tokenizer->beginStepping();
while ( $tg->tokenizer->step() ) {
foreach ( $tg->handler->tokens as $token ) {
yield $token;
}
$tg->handler->tokens = [];
}
foreach ( $tg->handler->tokens as $token ) {
yield $token;
}
}
}