2023-10-20 13:21:53 +00:00
|
|
|
<?php
|
|
|
|
|
|
2024-01-02 02:26:54 +00:00
|
|
|
namespace MediaWiki\OutputTransform;
|
2023-10-20 13:21:53 +00:00
|
|
|
|
|
|
|
|
use Language;
|
|
|
|
|
use MediaWiki\HookContainer\HookContainer;
|
|
|
|
|
use MediaWiki\Languages\LanguageFactory;
|
2024-01-02 02:26:54 +00:00
|
|
|
use MediaWiki\OutputTransform\Stages\AddRedirectHeader;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\AddWrapperDivClass;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\DeduplicateStyles;
|
2024-01-04 14:01:30 +00:00
|
|
|
use MediaWiki\OutputTransform\Stages\ExecutePostCacheTransformHooks;
|
2024-01-02 02:26:54 +00:00
|
|
|
use MediaWiki\OutputTransform\Stages\ExpandToAbsoluteUrls;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\ExtractBody;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\HandleSectionLinks;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\HandleTOCMarkers;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\HydrateHeaderPlaceholders;
|
|
|
|
|
use MediaWiki\OutputTransform\Stages\RenderDebugInfo;
|
2023-10-20 13:21:53 +00:00
|
|
|
use MediaWiki\Tidy\TidyDriverBase;
|
|
|
|
|
use MediaWiki\Title\TitleFactory;
|
|
|
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This class contains the default output transformation pipeline factory for wikitext. It is a postprocessor for
|
|
|
|
|
* ParserOutput objects either directly resulting from a parse or fetched from ParserCache.
|
|
|
|
|
* @unstable
|
|
|
|
|
*/
|
|
|
|
|
class DefaultOutputPipelineFactory {
|
|
|
|
|
|
|
|
|
|
private HookContainer $hookContainer;
|
|
|
|
|
private LoggerInterface $logger;
|
|
|
|
|
private TidyDriverBase $tidy;
|
|
|
|
|
private LanguageFactory $langFactory;
|
|
|
|
|
private Language $contentLang;
|
|
|
|
|
private TitleFactory $titleFactory;
|
|
|
|
|
|
|
|
|
|
public function __construct(
|
|
|
|
|
HookContainer $hookContainer,
|
|
|
|
|
TidyDriverBase $tidy,
|
|
|
|
|
LanguageFactory $langFactory,
|
|
|
|
|
Language $contentLang,
|
|
|
|
|
LoggerInterface $logger,
|
|
|
|
|
TitleFactory $titleFactory
|
|
|
|
|
) {
|
|
|
|
|
$this->hookContainer = $hookContainer;
|
|
|
|
|
$this->logger = $logger;
|
|
|
|
|
$this->langFactory = $langFactory;
|
|
|
|
|
$this->contentLang = $contentLang;
|
|
|
|
|
$this->tidy = $tidy;
|
|
|
|
|
$this->titleFactory = $titleFactory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Creates a pipeline of transformations to transform the content of the ParserOutput object from "parsed HTML"
|
|
|
|
|
* to "output HTML" and returns it.
|
|
|
|
|
* @internal
|
|
|
|
|
* @return OutputTransformPipeline
|
|
|
|
|
*/
|
|
|
|
|
public function buildPipeline(): OutputTransformPipeline {
|
|
|
|
|
return ( new OutputTransformPipeline() )
|
|
|
|
|
->addStage( new ExtractBody() )
|
|
|
|
|
->addStage( new AddRedirectHeader() )
|
|
|
|
|
->addStage( new RenderDebugInfo( $this->hookContainer ) )
|
2024-01-04 14:01:30 +00:00
|
|
|
->addStage( new ExecutePostCacheTransformHooks( $this->hookContainer ) )
|
2023-10-20 13:21:53 +00:00
|
|
|
->addStage( new AddWrapperDivClass( $this->langFactory, $this->contentLang ) )
|
|
|
|
|
->addStage( new HandleSectionLinks( $this->logger, $this->titleFactory ) )
|
|
|
|
|
->addStage( new HandleTOCMarkers( $this->tidy ) )
|
|
|
|
|
->addStage( new DeduplicateStyles() )
|
|
|
|
|
->addStage( new ExpandToAbsoluteUrls() )
|
|
|
|
|
->addStage( new HydrateHeaderPlaceholders() );
|
|
|
|
|
}
|
|
|
|
|
}
|