X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fparser%2FParser.php;h=b66031cc8804169f36aed386e585006a781ded2e;hb=b941889b4e9b7620eb6dbfc7bd19b341d2c9d94c;hp=c775cd9af757c6b67dd18a5ca92089aeceb8645d;hpb=3dfda8c1552a6d43eaf85e3e38427833114ddf06;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index c775cd9af7..b66031cc88 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -1113,7 +1113,11 @@ class Parser { $line = "{$line}"; } array_pop( $tr_attributes ); - $outLine = $line . str_repeat( '', $indent_level ); + if ( $indent_level > 0 ) { + $outLine = rtrim( $line ) . str_repeat( '', $indent_level ); + } else { + $outLine = $line; + } } elseif ( $first_two === '|-' ) { # Now we have a table row $line = preg_replace( '#^\|-+#', '', $line ); @@ -1204,13 +1208,15 @@ class Parser { # be mistaken as delimiting cell parameters # Bug T153140: Neither should language converter markup. if ( preg_match( '/\[\[|-\{/', $cell_data[0] ) === 1 ) { - $cell = "{$previous}<{$last_tag}>{$cell}"; + $cell = "{$previous}<{$last_tag}>" . trim( $cell ); } elseif ( count( $cell_data ) == 1 ) { - $cell = "{$previous}<{$last_tag}>{$cell_data[0]}"; + // Whitespace in cells is trimmed + $cell = "{$previous}<{$last_tag}>" . trim( $cell_data[0] ); } else { $attributes = $this->mStripState->unstripBoth( $cell_data[0] ); $attributes = Sanitizer::fixTagAttributes( $attributes, $last_tag ); - $cell = "{$previous}<{$last_tag}{$attributes}>{$cell_data[1]}"; + // Whitespace in cells is trimmed + $cell = "{$previous}<{$last_tag}{$attributes}>" . trim( $cell_data[1] ); } $outLine .= $cell; @@ -1465,7 +1471,7 @@ class Parser { /** * @throws MWException * @param array $m - * @return HTML|string + * @return string HTML */ public function magicLinkCallback( $m ) { if ( isset( $m[1] ) && $m[1] !== '' ) { @@ -1617,7 +1623,9 @@ class Parser { public function doHeadings( $text ) { for ( $i = 6; $i >= 1; --$i ) { $h = str_repeat( '=', $i ); - $text = preg_replace( "/^$h(.+)$h\\s*$/m", "\\1", $text ); + // Trim non-newline whitespace from headings + // Using \s* will break for: "==\n===\n" and parse as

=

+ $text = preg_replace( "/^(?:$h)[ \\t]*(.+?)[ \\t]*(?:$h)\\s*$/m", "\\1", $text ); } return $text; } @@ -1868,8 +1876,8 @@ class Parser { $dtrail = ''; - # Set linktype for CSS - if URL==text, link is essentially free - $linktype = ( $text === $url ) ? 'free' : 'text'; + # Set linktype for CSS + $linktype = 'text'; # No link text, e.g. [http://domain.tld/some.link] if ( $text == '' ) { @@ -4050,9 +4058,11 @@ class Parser { # Get all headlines for numbering them and adding funky stuff like [edit] # links - this is for later, but we need the number of headlines right now + # NOTE: white space in headings have been trimmed in doHeadings. They shouldn't + # be trimmed here since whitespace in HTML headings is significant. $matches = []; $numMatches = preg_match_all( - '/[1-6])(?P.*?>)\s*(?P
[\s\S]*?)\s*<\/H[1-6] *>/i', + '/[1-6])(?P.*?>)(?P
[\s\S]*?)<\/H[1-6] *>/i', $text, $matches ); @@ -5998,11 +6008,13 @@ class Parser { * unserializeHalfParsedText(). The text can then be safely incorporated into * the return value of a parser hook. * + * @deprecated since 1.31 * @param string $text * * @return array */ public function serializeHalfParsedText( $text ) { + wfDeprecated( __METHOD__, '1.31' ); $data = [ 'text' => $text, 'version' => self::HALF_PARSED_VERSION, @@ -6023,11 +6035,13 @@ class Parser { * If the $data array has been stored persistently, the caller should first * check whether it is still valid, by calling isValidHalfParsedText(). * + * @deprecated since 1.31 * @param array $data Serialized data * @throws MWException * @return string */ public function unserializeHalfParsedText( $data ) { + wfDeprecated( __METHOD__, '1.31' ); if ( !isset( $data['version'] ) || $data['version'] != self::HALF_PARSED_VERSION ) { throw new MWException( __METHOD__ . ': invalid version' ); } @@ -6048,11 +6062,13 @@ class Parser { * serializeHalfParsedText(), is compatible with the current version of the * parser. * + * @deprecated since 1.31 * @param array $data * * @return bool */ public function isValidHalfParsedText( $data ) { + wfDeprecated( __METHOD__, '1.31' ); return isset( $data['version'] ) && $data['version'] == self::HALF_PARSED_VERSION; }