Jackmcbarn has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/168607

Change subject: Warn when duplicate arguments are found
......................................................................

Warn when duplicate arguments are found

Currently, duplicate arguments result in a categorization but not a
warning, and it's often difficult to find where in the template hierarchy
the problem lies. This causes a warning to be provided containing the
calling page's name, the called template's name, and the parameter's name.

Change-Id: I26b9a7ed5a2f246d00a49a5f6effe40b4443a9d0
---
M includes/parser/Preprocessor_DOM.php
M includes/parser/Preprocessor_Hash.php
M languages/i18n/en.json
M languages/i18n/qqq.json
4 files changed, 10 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/07/168607/1

diff --git a/includes/parser/Preprocessor_DOM.php 
b/includes/parser/Preprocessor_DOM.php
index 2cce574..85183ab 100644
--- a/includes/parser/Preprocessor_DOM.php
+++ b/includes/parser/Preprocessor_DOM.php
@@ -1044,6 +1044,8 @@
                                        $index = $nameNodes->item( 0 
)->attributes->getNamedItem( 'index' )->textContent;
                                        $index = $index - $indexOffset;
                                        if ( isset( $namedArgs[$index] ) || 
isset( $numberedArgs[$index] ) ) {
+                                               
$this->parser->getOutput()->addWarning( wfMessage( 'duplicate-args-warning',
+                                                       $this->title, $title, 
$index )->text() );
                                                
$this->parser->addTrackingCategory( 'duplicate-args-category' );
                                        }
                                        $numberedArgs[$index] = $value->item( 0 
);
@@ -1052,6 +1054,8 @@
                                        // Named parameter
                                        $name = trim( $this->expand( 
$nameNodes->item( 0 ), PPFrame::STRIP_COMMENTS ) );
                                        if ( isset( $namedArgs[$name] ) || 
isset( $numberedArgs[$name] ) ) {
+                                               
$this->parser->getOutput()->addWarning( wfMessage( 'duplicate-args-warning',
+                                                       $this->title, $title, 
$name )->text() );
                                                
$this->parser->addTrackingCategory( 'duplicate-args-category' );
                                        }
                                        $namedArgs[$name] = $value->item( 0 );
diff --git a/includes/parser/Preprocessor_Hash.php 
b/includes/parser/Preprocessor_Hash.php
index b4b14dc..f777aeb 100644
--- a/includes/parser/Preprocessor_Hash.php
+++ b/includes/parser/Preprocessor_Hash.php
@@ -986,6 +986,8 @@
                                        // Numbered parameter
                                        $index = $bits['index'] - $indexOffset;
                                        if ( isset( $namedArgs[$index] ) || 
isset( $numberedArgs[$index] ) ) {
+                                               
$this->parser->getOutput()->addWarning( wfMessage( 'duplicate-args-warning',
+                                                       $this->title, $title, 
$index )->text() );
                                                
$this->parser->addTrackingCategory( 'duplicate-args-category' );
                                        }
                                        $numberedArgs[$index] = $bits['value'];
@@ -994,6 +996,8 @@
                                        // Named parameter
                                        $name = trim( $this->expand( 
$bits['name'], PPFrame::STRIP_COMMENTS ) );
                                        if ( isset( $namedArgs[$name] ) || 
isset( $numberedArgs[$name] ) ) {
+                                               
$this->parser->getOutput()->addWarning( wfMessage( 'duplicate-args-warning',
+                                                       $this->title, $title, 
$name )->text() );
                                                
$this->parser->addTrackingCategory( 'duplicate-args-category' );
                                        }
                                        $namedArgs[$name] = $bits['value'];
diff --git a/languages/i18n/en.json b/languages/i18n/en.json
index b6ee3c7..b3b3dd8 100644
--- a/languages/i18n/en.json
+++ b/languages/i18n/en.json
@@ -695,6 +695,7 @@
        "content-model-text": "plain text",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "duplicate-args-warning": "<strong>Warning:</strong> [[$1]] is calling 
$2 with more than one value for the $3 parameter. Only the last value provided 
will be used.",
        "duplicate-args-category": "Pages using duplicate arguments in template 
calls",
        "duplicate-args-category-desc": "The page contains template calls that 
use duplicates of arguments, such as 
<code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or 
<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Warning:</strong> This 
page contains too many expensive parser function calls.\n\nIt should have less 
than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 
calls}}.",
diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json
index 5de997c..8bc7b90 100644
--- a/languages/i18n/qqq.json
+++ b/languages/i18n/qqq.json
@@ -858,6 +858,7 @@
        "content-model-text": "Name for the plain text content model, used when 
decribing what type of content a page contains.\n\nThis message is substituted 
in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n{{Identical|Plain
 text}}",
        "content-model-javascript": "Name for the JavaScript content model, 
used when decribing what type of content a page contains.\n\nThis message is 
substituted 
in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
        "content-model-css": "Name for the CSS content model, used when 
decribing what type of content a page contains.\n\nThis message is substituted 
in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
+       "duplicate-args-warning": "If a page calls a template and specifies the 
same argument more than once, such as 
<code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or 
<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>, this warning is displayed when 
previewing.\n\nParameters:\n* $1 - The calling page\n* $2 - The called 
template\n $3 - The name of the duplicated argument",
        "duplicate-args-category": "This message is used as a category name for 
a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where 
pages are placed automatically if they contain template calls that use 
duplicates of arguments, such as 
<code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or 
<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "duplicate-args-category-desc": "Duplicate arguments category 
description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* 
{{msg-mw|Duplicate-args-category}}",
        "expensive-parserfunction-warning": "On some (expensive) 
[[MetaWikipedia:Help:ParserFunctions|parser functions]] (e.g. 
<code><nowiki>{{#ifexist:}}</nowiki></code>) there is a limit of how many times 
it may be used. This is an error message shown when the limit is 
exceeded.\n\nParameters:\n* $1 - the current number of parser function calls\n* 
$2 - the allowed number of parser function calls\nSee also 
[[:mw:Manual:$wgExpensiveParserFunctionLimit|$wgExpensiveParserFunctionLimit in 
the MediaWiki manual]].\n\nSee also:\n* 
{{msg-mw|Expensive-parserfunction-category}}",

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I26b9a7ed5a2f246d00a49a5f6effe40b4443a9d0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Jackmcbarn <jackmcb...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to