setHook('src', [__CLASS__, 'onRenderTag']); } /** * Render tag function. * * @param $input * @param array $args * @param Parser $parser * @param PPFrame $frame * * @return string|null */ public static function onRenderTag($input, array $args, Parser $parser, PPFrame $frame): ?string { // Message: block title. $msgTitle = MW_EXT_Kernel::getMessageText('src', 'block-title'); // Argument: type. $getType = MW_EXT_Kernel::outClear($args['type'] ?? '' ?: 'block'); $outType = $getType; // Argument: title. $getTitle = MW_EXT_Kernel::outClear($args['title'] ?? '' ?: $msgTitle); $outTitle = $getTitle; // Argument: lang. $getLang = MW_EXT_Kernel::outClear($args['lang'] ?? '' ?: 'none'); $outLang = $getLang; // Get content. $getContent = MW_EXT_Kernel::outClear($input); $outContent = $getContent; // Out code class. $outClass = ' class="language-' . $outLang . '"'; // Out HTML. if ($outType === 'block') { $outHTML = '
'; } elseif ($outType === 'inline') { $outHTML = '' . $outContent . '
';
} else {
$parser->addTrackingCategory('mw-src-error-category');
return null;
}
// Out parser.
return $outHTML;
}
/**
* Load resource function.
*
* @param OutputPage $out
* @param Skin $skin
*
* @return void
*/
public static function onBeforePageDisplay(OutputPage $out, Skin $skin): void
{
$out->addModuleStyles(['ext.mw.src.styles']);
$out->addModules(['ext.mw.src']);
}
}