wiki.techinc.nl/includes/parser/Parsoid/PageBundleJsonTrait.php
Nikki Nikkhoui b5fe60a7e1 Introduce PageBundleJsonTrait for serialization
New trait for PageBundle class to serialize & deserialize
PageBundle object into json before stashing and after unstashing.

Change-Id: I486fab5b3d01bcef2b535af579cd9672403b2102
2022-05-23 17:54:48 +01:00

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
];
}
}