Another try at fixing bug 93 "tilde signatures inside nowiki tags sometimes get expan...
authorPaul Copperman <pcopp@users.mediawiki.org>
Tue, 7 Jun 2011 15:12:26 +0000 (15:12 +0000)
committerPaul Copperman <pcopp@users.mediawiki.org>
Tue, 7 Jun 2011 15:12:26 +0000 (15:12 +0000)
* Change the preprocessor to insert strip items for <ignore> nodes during pre-save-transform, just like <comment> nodes are handled already. This effectively disables all pre-save-transform steps inside <includeonly> tags.
* Adapt parser tests to the new behavior.

RELEASE-NOTES-1.19
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
tests/parser/parserTests.txt

index 4577727..fa7cfbc 100644 (file)
@@ -86,6 +86,8 @@ production.
 * (bug 29101) Special:FileDuplicateSearch shows silly message
 * (bug 29048) jQuery.tabIndex: firstTabIndex() should not output the same
   as lastTabIndex().
+* (bug 93) tilde signatures inside nowiki tags sometimes get expanded
+  (<includeonly><nowiki>~~~~</nowiki></includeonly>)
 
 === API changes in 1.19 ===
 * BREAKING CHANGE: action=watch now requires POST and token.
index 48c2345..537abe9 100644 (file)
@@ -1089,8 +1089,11 @@ class PPFrame_DOM implements PPFrame {
                                        # OT_WIKI will only respect <ignore> in substed templates.
                                        # The other output types respect it unless NO_IGNORE is set.
                                        # extractSections() sets NO_IGNORE and so never respects it.
-                                       if ( ( !isset( $this->parent ) && $this->parser->ot['wiki'] ) || ( $flags & PPFrame::NO_IGNORE ) ) {
+                                       if ( $flags & PPFrame::NO_IGNORE ) {
                                                $out .= $contextNode->textContent;
+                                       # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
+                                       } elseif ( !isset( $this->parent ) && $this->parser->ot['wiki'] ) {
+                                               $out .= $this->parser->insertStripItem( $contextNode->textContent );
                                        } else {
                                                $out .= '';
                                        }
index c2d7d3d..77fe7c9 100644 (file)
@@ -1019,8 +1019,11 @@ class PPFrame_Hash implements PPFrame {
                                        # OT_WIKI will only respect <ignore> in substed templates.
                                        # The other output types respect it unless NO_IGNORE is set.
                                        # extractSections() sets NO_IGNORE and so never respects it.
-                                       if ( ( !isset( $this->parent ) && $this->parser->ot['wiki'] ) || ( $flags & PPFrame::NO_IGNORE ) ) {
+                                       if ( $flags & PPFrame::NO_IGNORE ) {
                                                $out .= $contextNode->firstChild->value;
+                                       # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
+                                       } elseif ( !isset( $this->parent ) && $this->parser->ot['wiki'] ) {
+                                               $out .= $this->parser->insertStripItem( $contextNode->firstChild->value );
                                        } else {
                                                //$out .= '';
                                        }
index 492d646..f90c523 100644 (file)
@@ -3926,7 +3926,7 @@ pst
 !! result
 * [[Special:Contributions/127.0.0.1|127.0.0.1]]
 * <noinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</noinclude>
-* <includeonly>[[Special:Contributions/127.0.0.1|127.0.0.1]]</includeonly>
+* <includeonly>~~~</includeonly>
 * <onlyinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</onlyinclude>
 !! end
 
@@ -3934,7 +3934,7 @@ pst
 !! test
 pre-save transform: Signature expansion in nowiki tags (bug 93)
 !! options
-pst disabled
+pst
 !! input
 Shall not expand: