Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 11
BehaviorSwitchHandler
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
30
0.00% covered (danger)
0.00%
0 / 11
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 onBehaviorSwitch
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 8
 onTag
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
<?php
declare( strict_types = 1 );
namespace Wikimedia\Parsoid\Wt2Html\TT;
use Wikimedia\Parsoid\Tokens\KV;
use Wikimedia\Parsoid\Tokens\SelfclosingTagTk;
use Wikimedia\Parsoid\Tokens\Token;
use Wikimedia\Parsoid\Wt2Html\TokenTransformManager;
/**
 * Handler for behavior switches, like '__TOC__' and similar.
 */
class BehaviorSwitchHandler extends TokenHandler {
    /**
     * @param TokenTransformManager $manager
     * @param array $options options
     */
    public function __construct( TokenTransformManager $manager, array $options ) {
        parent::__construct( $manager, $options );
    }
    /**
     * Main handler.
     * See {@link TokenTransformManager#addTransform}'s transformation parameter.
     *
     * @param Token $token
     * @return TokenHandlerResult
     */
    public function onBehaviorSwitch( Token $token ): TokenHandlerResult {
        $env = $this->env;
        $magicWord = $env->getSiteConfig()->magicWordCanonicalName( $token->attribs[0]->v );
        $env->setVariable( $magicWord, true );
        $metaToken = new SelfclosingTagTk(
            'meta',
            [ new KV( 'property', 'mw:PageProp/' . $magicWord ) ],
            $token->dataAttribs->clone()
        );
        return new TokenHandlerResult( [ $metaToken ] );
    }
    /**
     * @inheritDoc
     */
    public function onTag( Token $token ): ?TokenHandlerResult {
        return $token->getName() === 'behavior-switch' ? $this->onBehaviorSwitch( $token ) : null;
    }
}