New trait for PageBundle class to serialize & deserialize PageBundle object into json before stashing and after unstashing. Change-Id: I486fab5b3d01bcef2b535af579cd9672403b2102
53 lines
1.1 KiB
PHP
53 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Parser\Parsoid;
|
|
|
|
use MediaWiki\Json\JsonConstants;
|
|
use Wikimedia\Parsoid\Core\PageBundle;
|
|
|
|
/**
|
|
* Trait to aid in serializing/de-serializing PageBundle objects to
|
|
* and from JSON. Use in lieu of PHP built in serializer.
|
|
*
|
|
* @since 1.39
|
|
* @unstable since 1.39, should be removed before release.
|
|
*/
|
|
trait PageBundleJsonTrait {
|
|
|
|
/**
|
|
* @param array $data
|
|
*
|
|
* @return ?PageBundle
|
|
*/
|
|
protected function newPageBundleFromJson( array $data ): ?PageBundle {
|
|
if ( !$data ) {
|
|
return null;
|
|
}
|
|
return new PageBundle(
|
|
$data['html'],
|
|
$data['parsoid'] ?? null,
|
|
$data['mw'] ?? null,
|
|
$data['version'] ?? null,
|
|
$data['headers'] ?? null,
|
|
$data['contentmodel'] ?? null
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param PageBundle $bundle
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function jsonSerializePageBundle( PageBundle $bundle ): array {
|
|
return [
|
|
JsonConstants::TYPE_ANNOTATION => get_class( $bundle ),
|
|
'html' => $bundle->html,
|
|
'parsoid' => $bundle->parsoid,
|
|
'mw' => $bundle->mw,
|
|
'version' => $bundle->version,
|
|
'headers' => $bundle->headers,
|
|
'contentmodel' => $bundle->contentmodel
|
|
];
|
|
}
|
|
|
|
}
|