MediaWiki 1.42.1
PageBundleParserOutputConverter.php
Go to the documentation of this file.
1<?php
2
4
7use Wikimedia\Parsoid\Core\PageBundle;
8
20 public const PARSOID_PAGE_BUNDLE_KEY = 'parsoid-page-bundle';
21
26 private function __construct() {
27 }
28
43 public static function parserOutputFromPageBundle(
44 PageBundle $pageBundle, ?ParserOutput $originalParserOutput = null
45 ): ParserOutput {
46 $parserOutput = new ParserOutput( $pageBundle->html );
47
48 if ( $originalParserOutput ) {
49 $parserOutput->mergeHtmlMetaDataFrom( $originalParserOutput );
50 $parserOutput->mergeTrackingMetaDataFrom( $originalParserOutput );
51 $parserOutput->mergeInternalMetaDataFrom( $originalParserOutput );
52 }
53
54 $parserOutput->setExtensionData(
55 self::PARSOID_PAGE_BUNDLE_KEY,
56 [
57 'parsoid' => $pageBundle->parsoid,
58 'mw' => $pageBundle->mw,
59 'version' => $pageBundle->version,
60 'headers' => $pageBundle->headers,
61 'contentmodel' => $pageBundle->contentmodel,
62 ]
63 );
64
65 if ( isset( $pageBundle->headers['content-language'] ) ) {
66 $lang = LanguageCode::normalizeNonstandardCodeAndWarn(
67 // @phan-suppress-next-line PhanTypeArraySuspiciousNullable
68 $pageBundle->headers['content-language']
69 );
70 $parserOutput->setLanguage( $lang );
71 }
72
73 return $parserOutput;
74 }
75
83 public static function pageBundleFromParserOutput( ParserOutput $parserOutput ): PageBundle {
84 $pageBundleData = $parserOutput->getExtensionData( self::PARSOID_PAGE_BUNDLE_KEY );
85 $lang = $parserOutput->getLanguage();
86
87 $headers = $pageBundleData['headers'] ?? [];
88
89 if ( $lang ) {
90 $headers['content-language'] = $lang;
91 }
92
93 return new PageBundle(
94 $parserOutput->getRawText(),
95 $pageBundleData['parsoid'] ?? [],
96 $pageBundleData['mw'] ?? [],
97 // It would be nice to have this be "null", but PageBundle::responseData()
98 // chocks on that: T325137.
99 $pageBundleData['version'] ?? '0.0.0',
100 $pageBundleData['headers'] ?? $headers,
101 $pageBundleData['contentmodel'] ?? null
102 );
103 }
104
105 public static function hasPageBundle( ParserOutput $parserOutput ) {
106 return $parserOutput->getExtensionData( self::PARSOID_PAGE_BUNDLE_KEY ) !== null;
107 }
108}
getExtensionData()
Get the extension data as: augmentor name => data.
Methods for dealing with language codes.
Rendered output of a wiki page, as parsed from wikitext.
setExtensionData( $key, $value)
Attaches arbitrary data to this ParserObject.
mergeHtmlMetaDataFrom(ParserOutput $source)
Merges HTML metadata such as head items, JS config vars, and HTTP cache control info from $source int...
mergeTrackingMetaDataFrom(ParserOutput $source)
Merges dependency tracking metadata such as backlinks, images used, and extension data from $source i...
getLanguage()
Get the primary language code of the output.
mergeInternalMetaDataFrom(ParserOutput $source)
Merges internal metadata such as flags, accessed options, and profiling info from $source into this P...
setLanguage(Bcp47Code $lang)
Set the primary language of the output.
getExtensionData( $key)
Gets extensions data previously attached to this ParserOutput using setExtensionData().
getRawText()
Get the cacheable text with <mw:editsection> markers still in it.
Provides methods for conversion between PageBundle and ParserOutput TODO: Convert to a trait once we ...
static pageBundleFromParserOutput(ParserOutput $parserOutput)
Returns a Parsoid PageBundle equivalent to the given ParserOutput.
static parserOutputFromPageBundle(PageBundle $pageBundle, ?ParserOutput $originalParserOutput=null)
Creates a ParserOutput object containing the relevant data from the given PageBundle object.
Copyright (C) 2011-2022 Wikimedia Foundation and others.