X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fcontent%2FTextContent.php;h=5f585bc98abeef758bded9ef38bdb02d4e5f9556;hb=2480aae0c97d822e10b50619e7b48b25c45af073;hp=225522e92d1dee40d447a21e455e9f22fa5f56b2;hpb=e5facc46bc170c302438f60849041b0d6be75e82;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/content/TextContent.php b/includes/content/TextContent.php index 225522e92d..5f585bc98a 100644 --- a/includes/content/TextContent.php +++ b/includes/content/TextContent.php @@ -147,9 +147,28 @@ class TextContent extends AbstractContent { } } + /** + * Do a "\r\n" -> "\n" and "\r" -> "\n" transformation + * as well as trim trailing whitespace + * + * This was formerly part of Parser::preSaveTransform, but + * for non-wikitext content models they probably still want + * to normalize line endings without all of the other PST + * changes. + * + * @since 1.28 + * @param string $text + * @return string + */ + public static function normalizeLineEndings( $text ) { + return str_replace( [ "\r\n", "\r" ], "\n", rtrim( $text ) ); + } + /** * Returns a Content object with pre-save transformations applied. - * This implementation just trims trailing whitespace. + * + * At a minimum, subclasses should make sure to call TextContent::normalizeLineEndings() + * either directly or part of Parser::preSaveTransform(). * * @param Title $title * @param User $user @@ -159,7 +178,7 @@ class TextContent extends AbstractContent { */ public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) { $text = $this->getNativeData(); - $pst = rtrim( $text ); + $pst = self::normalizeLineEndings( $text ); return ( $text === $pst ) ? $this : new static( $pst, $this->getModel() ); } @@ -214,7 +233,7 @@ class TextContent extends AbstractContent { * @param int $revId Revision ID (for {{REVISIONID}}) * @param ParserOptions $options Parser options * @param bool $generateHtml Whether or not to generate HTML - * @param ParserOutput $output The output object to fill (reference). + * @param ParserOutput &$output The output object to fill (reference). */ protected function fillParserOutput( Title $title, $revId, ParserOptions $options, $generateHtml, ParserOutput &$output