* @author Kunal Mehta * * @since 1.24 * @ingroup Content */ class JsonContentHandler extends CodeContentHandler { public function __construct( $modelId = CONTENT_MODEL_JSON ) { parent::__construct( $modelId, [ CONTENT_FORMAT_JSON ] ); } /** * @return string */ protected function getContentClass() { return JsonContent::class; } public function makeEmptyContent() { $class = $this->getContentClass(); return new $class( '{}' ); } public function preSaveTransform( Content $content, PreSaveTransformParams $pstParams ): Content { $shouldCallDeprecatedMethod = $this->shouldCallDeprecatedContentTransformMethod( $content, $pstParams ); if ( $shouldCallDeprecatedMethod ) { return $this->callDeprecatedContentPST( $content, $pstParams ); } '@phan-var JsonContent $content'; // FIXME: WikiPage::doEditContent invokes PST before validation. As such, native data // may be invalid (though PST result is discarded later in that case). if ( !$content->isValid() ) { return $content; } $contentClass = $this->getContentClass(); return new $contentClass( JsonContent::normalizeLineEndings( $content->beautifyJSON() ) ); } }