oldHTML === null ) { $doc = $this->toDOM( $env ); } else { $doc = $env->createDocument( $selserData->oldHTML ); } $body = DOMCompat::getBody( $doc ); DOMDataUtils::visitAndLoadDataAttribs( $body, [ 'markNew' => true ] ); // Update DSR offsets if necessary. ContentUtils::convertOffsets( $env, $doc, $env->getRequestOffsetType(), 'byte' ); $env->setOrigDOM( $body ); } /** * @inheritDoc */ public function toDOM( Env $env ): DOMDocument { return $env->getPipelineFactory()->parse( $env->getPageConfig()->getPageMainContent() ); } /** * @inheritDoc */ public function fromDOM( Env $env, DOMDocument $doc, ?SelserData $selserData = null ): string { $serializerOpts = [ 'env' => $env, 'selserData' => $selserData, ]; $Serializer = null; if ( $selserData ) { $Serializer = SelectiveSerializer::class; $this->setupSelser( $env, $selserData ); } else { $Serializer = WikitextSerializer::class; } $serializer = new $Serializer( $serializerOpts ); $env->getPageConfig()->editedDoc = $doc; $body = DOMCompat::getBody( $doc ); DOMDataUtils::visitAndLoadDataAttribs( $body, [ 'markNew' => true ] ); // Update DSR offsets if necessary. ContentUtils::convertOffsets( $env, $doc, $env->getRequestOffsetType(), 'byte' ); return $serializer->serializeDOM( $body ); } }