html ); if ( $originalParserOutput ) { $parserOutput->mergeHtmlMetaDataFrom( $originalParserOutput ); $parserOutput->mergeTrackingMetaDataFrom( $originalParserOutput ); $parserOutput->mergeInternalMetaDataFrom( $originalParserOutput ); } $parserOutput->setExtensionData( self::PARSOID_PAGE_BUNDLE_KEY, [ 'parsoid' => $pageBundle->parsoid, 'mw' => $pageBundle->mw, 'version' => $pageBundle->version, 'headers' => $pageBundle->headers, 'contentmodel' => $pageBundle->contentmodel, ] ); if ( isset( $pageBundle->headers['content-language'] ) ) { $lang = LanguageCode::normalizeNonstandardCodeAndWarn( // @phan-suppress-next-line PhanTypeArraySuspiciousNullable $pageBundle->headers['content-language'] ); $parserOutput->setLanguage( $lang ); } return $parserOutput; } /** * Returns a Parsoid PageBundle equivalent to the given ParserOutput. * * @param ParserOutput $parserOutput * * @return PageBundle */ public static function pageBundleFromParserOutput( ParserOutput $parserOutput ): PageBundle { $pageBundleData = $parserOutput->getExtensionData( self::PARSOID_PAGE_BUNDLE_KEY ); $lang = $parserOutput->getLanguage(); $headers = $pageBundleData['headers'] ?? []; if ( $lang ) { $headers['content-language'] = $lang; } return new PageBundle( $parserOutput->getRawText(), $pageBundleData['parsoid'] ?? [], $pageBundleData['mw'] ?? [], // It would be nice to have this be "null", but PageBundle::responseData() // chocks on that: T325137. $pageBundleData['version'] ?? '0.0.0', $pageBundleData['headers'] ?? $headers, $pageBundleData['contentmodel'] ?? null ); } public static function hasPageBundle( ParserOutput $parserOutput ) { return $parserOutput->getExtensionData( self::PARSOID_PAGE_BUNDLE_KEY ) !== null; } }