File: OutputTransformStage.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (52 lines) | stat: -rw-r--r-- 2,045 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

namespace MediaWiki\OutputTransform;

use MediaWiki\Config\ServiceOptions;
use MediaWiki\Parser\ParserOptions;
use MediaWiki\Parser\ParserOutput;
use Psr\Log\LoggerInterface;

/**
 * Classes implementing the OutputTransformStage aim at being added to a pipeline of transformations that transform
 * a ParserOutput. The argument ParserOutput can explicitly be modified in place; ensuring that cached objects
 * do not suffer from side effects is the caller's (typically the pipeline's) responsibility.
 * @unstable
 */
abstract class OutputTransformStage {
	protected ServiceOptions $options;
	protected LoggerInterface $logger;

	/** @internal */
	public const CONSTRUCTOR_OPTIONS = [];

	/** @internal */
	public function __construct( ServiceOptions $options, LoggerInterface $logger ) {
		// Note this is static:: not self:: so we use the subclass options
		$options->assertRequiredOptions( static::CONSTRUCTOR_OPTIONS );
		$this->options = $options;
		$this->logger = $logger;
	}

	/**
	 * Decides whether or not the stage should be run
	 * @param ParserOutput $po
	 * @unstable
	 * @param ParserOptions|null $popts
	 * @param array $options
	 * @return bool
	 */
	abstract public function shouldRun( ParserOutput $po, ?ParserOptions $popts, array $options = [] ): bool;

	/**
	 * Transforms the input ParserOutput into the returned ParserOutput.
	 * The returned ParserOutput can explicitly be a modified version of the input ParserOutput; if modifications
	 * to that object are unexpected, a copy should be made before passing it to this method.
	 * TODO Some transformations require the possibility of modifying options (this is the case of
	 * ExecutePostCacheTransformHooks in particular). We do NOT want to keep this mechanism for later versions of
	 * this interface - the currently foreseen goal is to not pass $options at all.
	 * Modifying $options during this pass is considered deprecated.
	 * @unstable
	 */
	abstract public function transform( ParserOutput $po, ?ParserOptions $popts, array &$options ): ParserOutput;
}