jenkins-bot has submitted this change and it was merged.

Change subject: Make TOC hideable
......................................................................


Make TOC hideable

Currently, if an extension doesn't want a TOC, it has to remove it manually.
This change wraps the TOC in markers that make it easy to remove it in 
ParserOutput
on demand without fragmenting the parser cache with stuff like "use/not use 
TOC".

Change-Id: I2889bcb9eb999c9049601e92440132118e1a8a41
(cherry picked from commit 21c1c7d025365540f17be4f7ae19184e1ccca4cc)
---
M includes/OutputPage.php
M includes/parser/Parser.php
M includes/parser/ParserOutput.php
M tests/parser/parserTest.inc
M tests/parser/parserTests.txt
M tests/phpunit/includes/parser/NewParserTest.php
6 files changed, 100 insertions(+), 6 deletions(-)

Approvals:
  MarkAHershberger: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index 6a1ce19..7f0454f 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -256,6 +256,11 @@
        private $mTarget = null;
 
        /**
+        * @var bool: Whether output should contain table of contents
+        */
+       private $mEnableTOC = true;
+
+       /**
         * Constructor for OutputPage. This should not be called directly.
         * Instead a new RequestContext should be created and it will 
implicitly create
         * a OutputPage tied to that context.
@@ -1606,6 +1611,7 @@
         */
        function addParserOutput( &$parserOutput ) {
                $this->addParserOutputNoText( $parserOutput );
+               $parserOutput->setTOCEnabled( $this->mEnableTOC );
                $text = $parserOutput->getText();
                wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) );
                $this->addHTML( $text );
@@ -3648,4 +3654,20 @@
                return array();
        }
 
+       /**
+        * Enables/disables TOC, doesn't override __NOTOC__
+        * @param bool $flag
+        * @since 1.22
+        */
+       public function enableTOC( $flag = true ) {
+               $this->mEnableTOC = $flag;
+       }
+
+       /**
+        * @return bool
+        * @since 1.22
+        */
+       public function isTOCEnabled() {
+               return $this->mEnableTOC;
+       }
 }
diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php
index 5e86209..1f14223 100644
--- a/includes/parser/Parser.php
+++ b/includes/parser/Parser.php
@@ -115,6 +115,10 @@
        # Marker Suffix needs to be accessible staticly.
        const MARKER_SUFFIX = "-QINU\x7f";
 
+       # Markers used for wrapping the table of contents
+       const TOC_START = '<mw:toc>';
+       const TOC_END = '</mw:toc>';
+
        # Persistent:
        var $mTagHooks = array();
        var $mTransparentTagHooks = array();
@@ -2462,7 +2466,7 @@
                                $openmatch = preg_match( 
'/(?:<table|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|<p|<ul|<ol|<dl|<li|<\\/tr|<\\/td|<\\/th)/iS',
 $t );
                                $closematch = preg_match(
                                        
'/(?:<\\/table|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|' .
-                                       
'<td|<th|<\\/?blockquote|<\\/?div|<hr|<\\/pre|<\\/p|' . $this->mUniqPrefix . 
'-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS', $t );
+                                       
'<td|<th|<\\/?blockquote|<\\/?div|<hr|<\\/pre|<\\/p|<\\/mw:|' . 
$this->mUniqPrefix . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS', $t );
                                if ( $openmatch or $closematch ) {
                                        $paragraphStack = false;
                                        # TODO bug 5718: paragraph closed
@@ -4516,6 +4520,7 @@
                        }
                        $toc = Linker::tocList( $toc, 
$this->mOptions->getUserLangObj() );
                        $this->mOutput->setTOCHTML( $toc );
+                       $toc = self::TOC_START . $toc . self::TOC_END;
                }
 
                if ( $isMain ) {
diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php
index 9519de9..502f0fd 100644
--- a/includes/parser/ParserOutput.php
+++ b/includes/parser/ParserOutput.php
@@ -47,7 +47,8 @@
                $mEditSectionTokens = false,  # prefix/suffix markers if edit 
sections were output as tokens
                $mProperties = array(),       # Name/value pairs to be cached 
in the DB
                $mTOCHTML = '',               # HTML of the TOC
-               $mTimestamp;                  # Timestamp of the revision
+               $mTimestamp,                  # Timestamp of the revision
+               $mTOCEnabled = true;          # Whether TOC should be shown, 
can't override __NOTOC__
                private $mIndexPolicy = '';       # 'index' or 'noindex'?  Any 
other value will result in no change.
                private $mAccessedOptions = array(); # List of ParserOptions 
(stored in the keys)
                private $mSecondaryDataUpdates = array(); # List of DataUpdate, 
used to save info from the page somewhere else.
@@ -68,11 +69,27 @@
        }
 
        function getText() {
+               wfProfileIn( __METHOD__ );
+               $text = $this->mText;
                if ( $this->mEditSectionTokens ) {
-                       return preg_replace_callback( 
ParserOutput::EDITSECTION_REGEX,
-                               array( &$this, 
'replaceEditSectionLinksCallback' ), $this->mText );
+                       $text = preg_replace_callback( 
ParserOutput::EDITSECTION_REGEX,
+                               array( &$this, 
'replaceEditSectionLinksCallback' ), $text );
+               } else {
+                       $text = preg_replace( ParserOutput::EDITSECTION_REGEX, 
'', $text );
                }
-               return preg_replace( ParserOutput::EDITSECTION_REGEX, '', 
$this->mText );
+
+               // If you have an old cached version of this class - sorry, you 
can't disable the TOC
+               if ( isset( $this->mTOCEnabled ) && $this->mTOCEnabled ) {
+                       $text = str_replace( array( Parser::TOC_START, 
Parser::TOC_END ), '', $text );
+               } else {
+                       $text = preg_replace(
+                               '#'. preg_quote( Parser::TOC_START ) . '.*?' . 
preg_quote( Parser::TOC_END ) . '#s',
+                               '',
+                               $text
+                       );
+               }
+               wfProfileOut( __METHOD__ );
+               return $text;
        }
 
        /**
@@ -123,6 +140,7 @@
        function getTOCHTML()                { return $this->mTOCHTML; }
        function getTimestamp()              { return $this->mTimestamp; }
        function getLimitReportData()        { return $this->mLimitReportData; }
+       function getTOCEnabled()             { return $this->mTOCEnabled; }
 
        function setText( $text )            { return wfSetVar( $this->mText, 
$text ); }
        function setLanguageLinks( $ll )     { return wfSetVar( 
$this->mLanguageLinks, $ll ); }
@@ -134,6 +152,7 @@
        function setIndexPolicy( $policy )   { return wfSetVar( 
$this->mIndexPolicy, $policy ); }
        function setTOCHTML( $tochtml )      { return wfSetVar( 
$this->mTOCHTML, $tochtml ); }
        function setTimestamp( $timestamp )  { return wfSetVar( 
$this->mTimestamp, $timestamp ); }
+       function setTOCEnabled( $flag )      { return wfSetVar( 
$this->mTOCEnabled, $flag ); }
 
        function addCategory( $c, $sort )    { $this->mCategories[$c] = $sort; }
        function addLanguageLink( $t )       { $this->mLanguageLinks[] = $t; }
diff --git a/tests/parser/parserTest.inc b/tests/parser/parserTest.inc
index 5036a51..58ea1ed 100644
--- a/tests/parser/parserTest.inc
+++ b/tests/parser/parserTest.inc
@@ -494,6 +494,9 @@
 
        /**
         * Get a Parser object
+        *
+        * @param string $preprocessor
+        * @return Parser
         */
        function getParser( $preprocessor = null ) {
                global $wgParserConf;
@@ -566,6 +569,7 @@
                        $out = $parser->getPreloadText( $input, $title, 
$options );
                } else {
                        $output = $parser->parse( $input, $title, $options, 
true, true, 1337 );
+                       $output->setTOCEnabled( !isset( $opts['notoc'] ) );
                        $out = $output->getText();
 
                        if ( isset( $opts['showtitle'] ) ) {
@@ -618,7 +622,7 @@
        /**
         * Use a regex to find out the value of an option
         * @param $key String: name of option val to retrieve
-        * @param $opts Options array to look in
+        * @param $opts array: Options array to look in
         * @param $default Mixed: default value returned if not found
         */
        private static function getOptionValue( $key, $opts, $default ) {
diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt
index 3882185..02a66b5 100644
--- a/tests/parser/parserTests.txt
+++ b/tests/parser/parserTests.txt
@@ -26,6 +26,7 @@
 # showtitle     make the first line the title
 # comment       run through Linker::formatComment() instead of main parser
 # local         format section links in edit comment text as local links
+# notoc         disable table of contents
 #
 # You can also set the following parser properties via test options:
 #  wgEnableUploads, wgAllowExternalImages, wgMaxTocLevel,
@@ -10520,6 +10521,7 @@
 </li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Headline_1">Headline 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: Headline 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h3><span class="mw-headline" id="Subheadline_1">Subheadline 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: Subheadline 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h3>
 <h5><span class="mw-headline" id="Skipping_a_level">Skipping a 
level</span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: Skipping a level">edit</a><span 
class="mw-editsection-bracket">]</span></span></h5>
@@ -10575,6 +10577,7 @@
 </li>
 </ul>
 </div>
+
 <h1><span class="mw-headline" id="Level_1_Heading">Level 1 Heading</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: Level 1 Heading">edit</a><span 
class="mw-editsection-bracket">]</span></span></h1>
 <h2><span class="mw-headline" id="Level_2_Heading">Level 2 Heading</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: Level 2 Heading">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h3><span class="mw-headline" id="Level_3_Heading">Level 3 Heading</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: Level 3 Heading">edit</a><span 
class="mw-editsection-bracket">]</span></span></h3>
@@ -10617,6 +10620,7 @@
 </li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="title_1">title 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: title 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: title 1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h3>
 <h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: title 1.1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h4>
@@ -10653,6 +10657,7 @@
 </li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="title_1">title 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: title 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: title 1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h3>
 <h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: title 1.1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h4>
@@ -10683,6 +10688,7 @@
 <li class="toclevel-1 tocsection-5"><a href="#Section_2"><span 
class="tocnumber">2</span> <span class="toctext">Section 2</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Section_1">Section 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: Section 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h3><span class="mw-headline" id="Section_1.1">Section 1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: Section 1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h3>
 <h4><span class="mw-headline" id="Section_1.1.1">Section 1.1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: Section 1.1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h4>
@@ -10775,6 +10781,7 @@
 <li class="toclevel-1 tocsection-3"><a href="#title_2"><span 
class="tocnumber">2</span> <span class="toctext">title 2</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="title_1">title 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: title 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: title 1.1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h3>
 <h2><span class="mw-headline" id="title_2">title 2</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: title 2">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
@@ -10838,6 +10845,7 @@
 <li class="toclevel-1 tocsection-5"><a href="#text_.22_text"><span 
class="tocnumber">5</span> <span class="toctext">text " text</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="text_.3E_text">text &gt; text</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: text > text">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <p>section 1
 </p>
@@ -10872,6 +10880,7 @@
 <li class="toclevel-1 tocsection-4"><a href="#.3Ditalic_heading"><span 
class="tocnumber">4</span> <span class="toctext">=<i>italic</i> 
heading</span></a></li>
 </ul>
 </div>
+
 <h1><span class="mw-headline" id="foo.3D">foo=</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: foo=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
 <h1><span class="mw-headline" id=".3Dfoo">=foo</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: =foo">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
 <h1><span class="mw-headline" id="italic_heading.3D"><i>italic</i> 
heading=</span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: italic heading=">edit</a><span 
class="mw-editsection-bracket">]</span></span></h1>
@@ -10909,6 +10918,7 @@
 </li>
 </ul>
 </div>
+
 <h1><span class="mw-headline" id="Header_1">Header 1</span></h1>
 <h2><span class="mw-headline" id="Header_1.1">Header 1.1</span></h2>
 <h2><span class="mw-headline" id="Header_1.2">Header 1.2</span></h2>
@@ -12296,6 +12306,7 @@
 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span 
class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
 </ul>
 </div>
+
 
 !! end
 
@@ -14226,6 +14237,7 @@
 </li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="2">2</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <h6><span class="mw-headline" id="6">6</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: 6">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
 <h3><span class="mw-headline" id="3">3</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: 3">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
@@ -15824,6 +15836,7 @@
 <li class="toclevel-1 tocsection-1"><a href="#Lost_episodes"><span 
class="tocnumber">1</span> <span class="toctext"><i>Lost</i> 
episodes</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Lost_episodes"><i>Lost</i> 
episodes</span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit 
section: Lost episodes">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 
 !! end
@@ -15841,6 +15854,7 @@
 <li class="toclevel-1 tocsection-1"><a 
href="#should_be_bold_then_normal_text"><span class="tocnumber">1</span> <span 
class="toctext"><b>should be bold</b> then normal text</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="should_be_bold_then_normal_text"><b>should 
be bold</b> then normal text</span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit 
section: should be bold then normal text">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 
 !! end
@@ -15858,6 +15872,7 @@
 <li class="toclevel-1 tocsection-1"><a href="#Image"><span 
class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Image">Image <a href="/wiki/File:Foobar.jpg" 
class="image"><img alt="Foobar.jpg" 
src="http://example.com/images/3/3a/Foobar.jpg"; width="1941" height="220" 
/></a></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit 
section: Image">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 
 !! end
@@ -15875,6 +15890,7 @@
 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span 
class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" 
id="Quote"><blockquote>Quote</blockquote></span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit 
section: Quote">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 
 !! end
@@ -15894,6 +15910,7 @@
 <li class="toclevel-1 tocsection-1"><a href="#Proof:_2_.3C_3"><span 
class="tocnumber">1</span> <span class="toctext">Proof: 2 &lt; 3</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Proof:_2_.3C_3">Proof: 2 &lt; 3</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit 
section: Proof: 2 &lt; 3">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <p><small>Hanc marginis exiguitas non caperet.</small>
 QED
@@ -15914,6 +15931,7 @@
 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span 
class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: Foo Bar">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> 
<blockquote>Bar</blockquote></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: Foo Bar">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 
@@ -15933,6 +15951,7 @@
 <li class="toclevel-1 tocsection-2"><a href="#b.22.3EEvilbye"><span 
class="tocnumber">2</span> <span class="toctext"><sup> 
b"&gt;Evilbye</sup></span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="Hello"><sup 
class="in-h2">Hello</sup></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: Hello">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h2><span class="mw-headline" id="b.22.3EEvilbye"><sup> 
b"&gt;Evilbye</sup></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: b&quot;>Evilbye">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 
@@ -15961,6 +15980,7 @@
 <li class="toclevel-1 tocsection-5"><a 
href="#Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span
 class="tocnumber">5</span> <span class="toctext"><span dir="ltr">Attributes 
after dir on these span tags must be deleted from the TOC</span></span></a></li>
 </ul>
 </div>
+
 <h2><span class="mw-headline" id="C.2B.2B"><span 
dir="ltr">C++</span></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: C++">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <h2><span class="mw-headline" id=".D7.96.D7.91.D7.A0.D7.92.21"><span 
dir="rtl">זבנג!</span></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: זבנג!">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
 <h2><span class="mw-headline" 
id="The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span 
style="font-style: italic">The attributes on these span tags must be deleted 
from the TOC</span></span><span class="mw-editsection"><span 
class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: The attributes on these span tags must be deleted from the 
TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
@@ -16250,6 +16270,29 @@
 </p>
 !! end
 
+!!test
+Disable TOC
+!! options
+notoc
+!! input
+Lead
+== Section 1 ==
+== Section 2 ==
+== Section 3 ==
+== Section 4 ==
+== Section 5 ==
+!! result
+<p>Lead
+</p>
+
+<h2><span class="mw-headline" id="Section_1">Section 1</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit 
section: Section 1">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_2">Section 2</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit 
section: Section 2">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_3">Section 3</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit 
section: Section 3">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_4">Section 4</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit 
section: Section 4">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_5">Section 5</span><span 
class="mw-editsection"><span class="mw-editsection-bracket">[</span><a 
href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit 
section: Section 5">edit</a><span 
class="mw-editsection-bracket">]</span></span></h2>
+
+!! end
+
 
 ###
 ### Parsoids-specific tests
diff --git a/tests/phpunit/includes/parser/NewParserTest.php 
b/tests/phpunit/includes/parser/NewParserTest.php
index 43d2c9d..eac4de5 100644
--- a/tests/phpunit/includes/parser/NewParserTest.php
+++ b/tests/phpunit/includes/parser/NewParserTest.php
@@ -631,6 +631,7 @@
                        $out = $parser->getPreloadText( $input, $title, 
$options );
                } else {
                        $output = $parser->parse( $input, $title, $options, 
true, true, 1337 );
+                       $output->setTOCEnabled( !isset( $opts['notoc'] ) );
                        $out = $output->getText();
 
                        if ( isset( $opts['showtitle'] ) ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/91652
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I2889bcb9eb999c9049601e92440132118e1a8a41
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: REL1_22
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: MarkAHershberger <[email protected]>
Gerrit-Reviewer: MaxSem <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to