Revert "Move wfEscapeWikiText() to Parser::escapeWikitext()"
authorLegoktm <legoktm.wikipedia@gmail.com>
Fri, 23 Sep 2016 00:29:21 +0000 (00:29 +0000)
committerLegoktm <legoktm.wikipedia@gmail.com>
Fri, 23 Sep 2016 00:29:21 +0000 (00:29 +0000)
Apparently it is possible for Parser::mParserOptions
to not be set in some cases. I'll try again later.

This reverts commit bda74bff6e180b5a6bb2cc68e12ae391d53789a3.

Bug: T146433
Change-Id: Idb6d1b20995d5f86b712abb386ab987356c4f560

includes/GlobalFunctions.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php

index ee5ebd0..0e59653 100644 (file)
@@ -1656,8 +1656,6 @@ function wfClientAcceptsGzip( $force = false ) {
 }
 
 /**
- * @deprecated since 1.28, use Parser::escapeWikitext() directly
- *
  * Escapes the given text so that it may be output using addWikiText()
  * without any linking, formatting, etc. making its way through. This
  * is achieved by substituting certain characters with HTML entities.
@@ -1667,8 +1665,47 @@ function wfClientAcceptsGzip( $force = false ) {
  * @return string
  */
 function wfEscapeWikiText( $text ) {
-       global $wgParser;
-       return $wgParser->escapeWikitext( $text );
+       global $wgEnableMagicLinks;
+       static $repl = null, $repl2 = null;
+       if ( $repl === null ) {
+               $repl = [
+                       '"' => '&#34;', '&' => '&#38;', "'" => '&#39;', '<' => '&#60;',
+                       '=' => '&#61;', '>' => '&#62;', '[' => '&#91;', ']' => '&#93;',
+                       '{' => '&#123;', '|' => '&#124;', '}' => '&#125;', ';' => '&#59;',
+                       "\n#" => "\n&#35;", "\r#" => "\r&#35;",
+                       "\n*" => "\n&#42;", "\r*" => "\r&#42;",
+                       "\n:" => "\n&#58;", "\r:" => "\r&#58;",
+                       "\n " => "\n&#32;", "\r " => "\r&#32;",
+                       "\n\n" => "\n&#10;", "\r\n" => "&#13;\n",
+                       "\n\r" => "\n&#13;", "\r\r" => "\r&#13;",
+                       "\n\t" => "\n&#9;", "\r\t" => "\r&#9;", // "\n\t\n" is treated like "\n\n"
+                       "\n----" => "\n&#45;---", "\r----" => "\r&#45;---",
+                       '__' => '_&#95;', '://' => '&#58;//',
+               ];
+
+               $magicLinks = array_keys( array_filter( $wgEnableMagicLinks ) );
+               // We have to catch everything "\s" matches in PCRE
+               foreach ( $magicLinks as $magic ) {
+                       $repl["$magic "] = "$magic&#32;";
+                       $repl["$magic\t"] = "$magic&#9;";
+                       $repl["$magic\r"] = "$magic&#13;";
+                       $repl["$magic\n"] = "$magic&#10;";
+                       $repl["$magic\f"] = "$magic&#12;";
+               }
+
+               // And handle protocols that don't use "://"
+               global $wgUrlProtocols;
+               $repl2 = [];
+               foreach ( $wgUrlProtocols as $prot ) {
+                       if ( substr( $prot, -1 ) === ':' ) {
+                               $repl2[] = preg_quote( substr( $prot, 0, -1 ), '/' );
+                       }
+               }
+               $repl2 = $repl2 ? '/\b(' . implode( '|', $repl2 ) . '):/i' : '/^(?!)/';
+       }
+       $text = substr( strtr( "\n$text", $repl ), 1 );
+       $text = preg_replace( $repl2, '$1&#58;', $text );
+       return $text;
 }
 
 /**
index b3dc17c..01cce02 100644 (file)
@@ -594,98 +594,98 @@ class CoreParserFunctions {
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getText() );
+               return wfEscapeWikiText( $t->getText() );
        }
-       public static function pagenamee( Parser $parser, $title = null ) {
+       public static function pagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getPartialURL() );
+               return wfEscapeWikiText( $t->getPartialURL() );
        }
-       public static function fullpagename( Parser $parser, $title = null ) {
+       public static function fullpagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) || !$t->canTalk() ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getPrefixedText() );
+               return wfEscapeWikiText( $t->getPrefixedText() );
        }
-       public static function fullpagenamee( Parser $parser, $title = null ) {
+       public static function fullpagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) || !$t->canTalk() ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getPrefixedURL() );
+               return wfEscapeWikiText( $t->getPrefixedURL() );
        }
-       public static function subpagename( Parser $parser, $title = null ) {
+       public static function subpagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getSubpageText() );
+               return wfEscapeWikiText( $t->getSubpageText() );
        }
-       public static function subpagenamee( Parser $parser, $title = null ) {
+       public static function subpagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getSubpageUrlForm() );
+               return wfEscapeWikiText( $t->getSubpageUrlForm() );
        }
-       public static function rootpagename( Parser $parser, $title = null ) {
+       public static function rootpagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getRootText() );
+               return wfEscapeWikiText( $t->getRootText() );
        }
-       public static function rootpagenamee( Parser $parser, $title = null ) {
+       public static function rootpagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( wfUrlencode( str_replace( ' ', '_', $t->getRootText() ) ) );
+               return wfEscapeWikiText( wfUrlencode( str_replace( ' ', '_', $t->getRootText() ) ) );
        }
-       public static function basepagename( Parser $parser, $title = null ) {
+       public static function basepagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getBaseText() );
+               return wfEscapeWikiText( $t->getBaseText() );
        }
-       public static function basepagenamee( Parser $parser, $title = null ) {
+       public static function basepagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( wfUrlencode( str_replace( ' ', '_', $t->getBaseText() ) ) );
+               return wfEscapeWikiText( wfUrlencode( str_replace( ' ', '_', $t->getBaseText() ) ) );
        }
-       public static function talkpagename( Parser $parser, $title = null ) {
+       public static function talkpagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) || !$t->canTalk() ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getTalkPage()->getPrefixedText() );
+               return wfEscapeWikiText( $t->getTalkPage()->getPrefixedText() );
        }
-       public static function talkpagenamee( Parser $parser, $title = null ) {
+       public static function talkpagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) || !$t->canTalk() ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getTalkPage()->getPrefixedURL() );
+               return wfEscapeWikiText( $t->getTalkPage()->getPrefixedURL() );
        }
-       public static function subjectpagename( Parser $parser, $title = null ) {
+       public static function subjectpagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getSubjectPage()->getPrefixedText() );
+               return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedText() );
        }
-       public static function subjectpagenamee( Parser $parser, $title = null ) {
+       public static function subjectpagenamee( $parser, $title = null ) {
                $t = Title::newFromText( $title );
                if ( is_null( $t ) ) {
                        return '';
                }
-               return $parser->escapeWikitext( $t->getSubjectPage()->getPrefixedURL() );
+               return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedURL() );
        }
 
        /**
index 0fb021c..7c18798 100644 (file)
@@ -6028,62 +6028,4 @@ class Parser {
                OutputPage::setupOOUI();
                $this->mOutput->setEnableOOUI( true );
        }
-
-       /**
-        * Escapes the given text so that it may be output using addWikiText()
-        * without any linking, formatting, etc. making its way through. This
-        * is achieved by substituting certain characters with HTML entities.
-        * As required by the callers, "<nowiki>" is not used.
-        *
-        * @since 1.28
-        *
-        * @param string $text Text to be escaped
-        * @return string
-        */
-       public function escapeWikitext( $text ) {
-               static $repl = null, $repl2 = null;
-               if ( $repl === null ) {
-                       $repl = [
-                               '"' => '&#34;', '&' => '&#38;', "'" => '&#39;', '<' => '&#60;',
-                               '=' => '&#61;', '>' => '&#62;', '[' => '&#91;', ']' => '&#93;',
-                               '{' => '&#123;', '|' => '&#124;', '}' => '&#125;', ';' => '&#59;',
-                               "\n#" => "\n&#35;", "\r#" => "\r&#35;",
-                               "\n*" => "\n&#42;", "\r*" => "\r&#42;",
-                               "\n:" => "\n&#58;", "\r:" => "\r&#58;",
-                               "\n " => "\n&#32;", "\r " => "\r&#32;",
-                               "\n\n" => "\n&#10;", "\r\n" => "&#13;\n",
-                               "\n\r" => "\n&#13;", "\r\r" => "\r&#13;",
-                               "\n\t" => "\n&#9;", "\r\t" => "\r&#9;", // "\n\t\n" is treated like "\n\n"
-                               "\n----" => "\n&#45;---", "\r----" => "\r&#45;---",
-                               '__' => '_&#95;', '://' => '&#58;//',
-                       ];
-
-                       $magicLinks = array_keys( array_filter( [
-                               'ISBN' => $this->mOptions->getMagicISBNLinks(),
-                               'PMID' => $this->mOptions->getMagicPMIDLinks(),
-                               'RFC' => $this->mOptions->getMagicRFCLinks(),
-                       ] ) );
-                       // We have to catch everything "\s" matches in PCRE
-                       foreach ( $magicLinks as $magic ) {
-                               $repl["$magic "] = "$magic&#32;";
-                               $repl["$magic\t"] = "$magic&#9;";
-                               $repl["$magic\r"] = "$magic&#13;";
-                               $repl["$magic\n"] = "$magic&#10;";
-                               $repl["$magic\f"] = "$magic&#12;";
-                       }
-
-                       // And handle protocols that don't use "://"
-                       global $wgUrlProtocols;
-                       $repl2 = [];
-                       foreach ( $wgUrlProtocols as $prot ) {
-                               if ( substr( $prot, -1 ) === ':' ) {
-                                       $repl2[] = preg_quote( substr( $prot, 0, -1 ), '/' );
-                               }
-                       }
-                       $repl2 = $repl2 ? '/\b(' . implode( '|', $repl2 ) . '):/i' : '/^(?!)/';
-               }
-               $text = substr( strtr( "\n$text", $repl ), 1 );
-               $text = preg_replace( $repl2, '$1&#58;', $text );
-               return $text;
-       }
 }