1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
<?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
];
}
}
|