Difference between revisions of "Talk:Test includematch"

From FollowTheScore
Jump to: navigation, search
(Reply and Explanation)
Line 5: Line 5:
 
<dpl>
 
<dpl>
 
category=African Country
 
category=African Country
includepage={African Country}:languages,{African Country}:government_type,{African Country}:area,{African Country}:population,{African Country}:gdp,{African Country}:independence_day
+
includepage={African Country}:languages,{African Country}:goverment,{African Country}:area,{African Country}:population,{African Country}:gdp,{African Country}:independence_day
 
mode=userformat
 
mode=userformat
 
listseparators=¶{|class=sortable ¶!No ¶! Name ¶! Languages ¶! Government ¶! Area ¶! Population ¶! GDP ¶! Independence Day , ¶|-¶|%NR%¶|[[%PAGE%]] , ,¶|}
 
listseparators=¶{|class=sortable ¶!No ¶! Name ¶! Languages ¶! Government ¶! Area ¶! Population ¶! GDP ¶! Independence Day , ¶|-¶|%NR%¶|[[%PAGE%]] , ,¶|}
Line 37: Line 37:
 
  category=African Country
 
  category=African Country
 
  namespace=
 
  namespace=
  include={African Country}:languages:government_type:area:population:gdp:independence_day
+
  include={African Country}:languages:goverment:area:population:gdp:independence_day
 
  includematch=/languages\s*=\s*[^|]*English/s
 
  includematch=/languages\s*=\s*[^|]*English/s
 
  table=class=sortable,Name,Languages,Government,Area,Population,GDP,Independence Day
 
  table=class=sortable,Name,Languages,Government,Area,Population,GDP,Independence Day
Line 45: Line 45:
 
</nowiki></pre>
 
</nowiki></pre>
  
And here is the result with 'English':
+
And here is the result with 'French':
  
 
<dpl>
 
<dpl>
 
  category=African Country
 
  category=African Country
 
  namespace=
 
  namespace=
  include={African Country}:languages:government_type:area:population:gdp:independence_day
+
  include={African Country}:languages:goverment:area:population:gdp:independence_day
  includematch=/languages\s*=\s*[^|]*English/s
+
  includematch=/languages\s*=\s*[^|]*French/s
 
  table=class=sortable,Name,Languages,Government,Area,Population,GDP,Independence Day
 
  table=class=sortable,Name,Languages,Government,Area,Population,GDP,Independence Day
 
  resultsheader=Number of data = %PAGES%\n
 
  resultsheader=Number of data = %PAGES%\n
Line 69: Line 69:
 
</dpl>
 
</dpl>
  
Note: If you use the #dpl parser function notation you must not use the pipe directly because it would be misperceived as a field demiter for #dpl itself. IN that case you should use something like ''<nowiki>[^{{!}}]*</nowiki>'' (assuming that there is a template called ''!'' which retuzrn s a single pipe character.
+
Note: If you use the #dpl parser function notation you must not use the pipe directly because it would be misperceived as a field demiter for #dpl itself. In that case you should use something like ''<nowiki>[^{{!}}]*</nowiki>'' (assuming that there is a template called ''!'' which returns a single pipe character.
 +
:[[User:Gero|Gero]] 12:13, 24 November 2007 (CET)

Revision as of 13:13, 24 November 2007

Includematch searches all fields instead of just one (bug?)

I tested the following example and noticed strange includematch behaviour.

<dpl>
category=African Country
includepage={African Country}:languages,{African Country}:goverment,{African Country}:area,{African Country}:population,{African Country}:gdp,{African Country}:independence_day
mode=userformat
listseparators=¶{|class=sortable ¶!No ¶! Name ¶! Languages ¶! Government ¶! Area ¶! Population ¶! GDP ¶! Independence Day , ¶|-¶|%NR%¶|[[%PAGE%]] , ,¶|}
secseparators=¶|
resultsheader=Number of data = %PAGES%
includematch=/languages\s*=\s*.*English.*/s
</dpl>

Try for example replacing

includematch=/languages\s*=\s*.*English.*/s

with

includematch=/languages\s*=\s*.*1961.*/s

and you still got a result because the "Independance day" column is searched. Shouldn't only the "Languages" column being searched? --Mark P. 23:25, 22 November 2007 (CET)

Reply and Explanation

First, the DPL statement above could be written more elegantly, using the table command. The table command was invented recently to facilitate standard view definitions.

Second the regexep uses ".*" before 'English' or '1961'. This means that also pipe characters will be skipped - so '1961' will be accepted if it occurs ANYWHERE AFTER 'languages'. What you wnat, however, is to stop the pattern matching at field boundaries /(i.e. at pipoe characters). Therefore you must use [^|]* instead of .* which will match all characters EXCEPT The field delimiting pipe character.

Third, the '.*' AFTER 'English' is useless and should be left away.

<dpl>
 category=African Country
 namespace=
 include={African Country}:languages:goverment:area:population:gdp:independence_day
 includematch=/languages\s*=\s*[^|]*English/s
 table=class=sortable,Name,Languages,Government,Area,Population,GDP,Independence Day
 resultsheader=Number of data = %PAGES%\n
 noresultsheader= no matching country found.\n
</dpl>

And here is the result with 'French':

Number of data = 3

Name Languages Government Area Population GDP Independence Day
DPL Example 015
Republic of Burundi Kirundi,French Republic 10,745 sq mi 7,548,000 $4.517 billion 01/07/1962
Republic of Cameroon French,English Republic 183,568 sq mi 17,795,000 $43.196 billion 01/10/1961

.. and with '1961'

Number of data = 1

Name Languages Government Area Population GDP Independence Day
DPL Example 015

Note: If you use the #dpl parser function notation you must not use the pipe directly because it would be misperceived as a field demiter for #dpl itself. In that case you should use something like [^{{!}}]* (assuming that there is a template called ! which returns a single pipe character.

Gero 12:13, 24 November 2007 (CET)