Create ParserLogLinterData hook

This hook was formerly defined by Extension:Linter and invoked by
Parsoid, but as this part of Parsoid is moving into core the hook
should now be defined by core as well.

Bug: T304740
Change-Id: Iffd073e510202e5766632cc01d3585815289b7b4
This commit is contained in:
C. Scott Ananian 2022-03-28 17:04:49 -04:00
parent 3a8f5b748f
commit 3cd693aed6
4 changed files with 47 additions and 3 deletions

View file

@ -973,6 +973,7 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Hook\\ParserGetVariableValueVarCacheHook' => __DIR__ . '/includes/parser/Hook/ParserGetVariableValueVarCacheHook.php',
'MediaWiki\\Hook\\ParserLimitReportFormatHook' => __DIR__ . '/includes/parser/Hook/ParserLimitReportFormatHook.php',
'MediaWiki\\Hook\\ParserLimitReportPrepareHook' => __DIR__ . '/includes/parser/Hook/ParserLimitReportPrepareHook.php',
'MediaWiki\\Hook\\ParserLogLinterDataHook' => __DIR__ . '/includes/parser/Hook/ParserLogLinterDataHook.php',
'MediaWiki\\Hook\\ParserMakeImageParamsHook' => __DIR__ . '/includes/parser/Hook/ParserMakeImageParamsHook.php',
'MediaWiki\\Hook\\ParserModifyImageHTML' => __DIR__ . '/includes/parser/Hook/ParserModifyImageHTML.php',
'MediaWiki\\Hook\\ParserOptionsRegisterHook' => __DIR__ . '/includes/parser/Hook/ParserOptionsRegisterHook.php',

View file

@ -288,6 +288,7 @@ class HookRunner implements
\MediaWiki\Hook\ParserGetVariableValueVarCacheHook,
\MediaWiki\Hook\ParserLimitReportFormatHook,
\MediaWiki\Hook\ParserLimitReportPrepareHook,
\MediaWiki\Hook\ParserLogLinterDataHook,
\MediaWiki\Hook\ParserMakeImageParamsHook,
\MediaWiki\Hook\ParserModifyImageHTML,
\MediaWiki\Hook\ParserOptionsRegisterHook,
@ -2912,6 +2913,13 @@ class HookRunner implements
);
}
public function onParserLogLinterData( string $title, int $revId, array $lints ): bool {
return $this->container->run(
'ParserLogLinterData',
[ $title, $revId, $lints ]
);
}
public function onParserMakeImageParams( $title, $file, &$params, $parser ) {
return $this->container->run(
'ParserMakeImageParams',

View file

@ -0,0 +1,36 @@
<?php
namespace MediaWiki\Hook;
/**
* This is a hook handler interface, see docs/Hooks.md.
* Use the hook name "ParserLogLinterData" to register handlers
* implementing this interface.
*
* @unstable
* @ingroup Hooks
*/
interface ParserLogLinterDataHook {
/**
* This hook allows Parsoid to log additional linting information
* during a parse to a database maintained by the [[Extension:Linter]].
* See [[Extension:Linter]] for more information.
*
* @param string $title The title of the page being parsed
* @param int $revId The revision ID of the page being parsed
* (this hook is typically only invoked if this corresponds to the
* most recent revision of the given page).
* @param array $lints The linter information for the given revision
* of the page.
* @return bool Typically returns true, to allow all registered hooks a
* chance to record these lints.
*
* @unstable temporary hook
* @since 1.39
*/
public function onParserLogLinterData(
string $title,
int $revId,
array $lints
): bool;
}

View file

@ -435,9 +435,8 @@ class DataAccess extends IDataAccess {
// Only send the request if it the latest revision
if ( $revId !== null && $revId === $latest ) {
// @todo: Document this hook in MediaWiki / Extension:Linter
$this->hookContainer->run(
'ParserLogLinterData', [ $title, $revId, $lints ]
$this->hookRunner->onParserLogLinterData(
$title, $revId, $lints
);
}
}