/** @module */
'use strict';
const { Util } = require('../../utils/Util.js');
const TokenHandler = require('./TokenHandler.js');
const { KV, SelfclosingTagTk } = require('../../tokens/TokenTypes.js');
/**
* Handler for behavior switches, like '__TOC__' and similar.
*
* @class
* @extends module:wt2html/tt/TokenHandler
*/
class BehaviorSwitchHandler extends TokenHandler {
/**
* Main handler.
* See {@link TokenTransformManager#addTransform}'s transformation parameter.
*/
onBehaviorSwitch(token) {
const env = this.manager.env;
const magicWord = env.conf.wiki.magicWordCanonicalName(token.attribs[0].v);
env.setVariable(magicWord, true);
const metaToken = new SelfclosingTagTk(
'meta',
[ new KV('property', 'mw:PageProp/' + magicWord) ],
Util.clone(token.dataAttribs)
);
return { tokens: [ metaToken ] };
}
onTag(token) {
return token.name === 'behavior-switch' ? this.onBehaviorSwitch(token) : token;
}
}
if (typeof module === "object") {
module.exports.BehaviorSwitchHandler = BehaviorSwitchHandler;
}