Fixes Bug #30149 - Handling of parentheses for Korean, Chinese and Japanese

Adapts the pipe trick with parens for fullwidth parentheses.  Adds parsertests.

Patch from Dan Collins.
This commit is contained in:
Mark A. Hershberger 2011-08-01 17:37:25 +00:00
parent e08b912e5d
commit 507edf6873
2 changed files with 123 additions and 3 deletions

View file

@ -4320,9 +4320,9 @@ class Parser {
$tc = "[$wgLegalTitleChars]";
$nc = '[ _0-9A-Za-z\x80-\xff-]'; # Namespaces can use non-ascii!
$p1 = "/\[\[(:?$nc+:|:|)($tc+?)( \\($tc+\\))\\|]]/"; # [[ns:page (context)|]]
$p4 = "/\[\[(:?$nc+:|:|)($tc+?)($tc+)\\|]]/"; # [[ns:pagecontext|]]
$p3 = "/\[\[(:?$nc+:|:|)($tc+?)( \\($tc+\\)|)(, $tc+|)\\|]]/"; # [[ns:page (context), context|]]
$p1 = "/\[\[(:?$nc+:|:|)($tc+?)(\s?\\($tc+\\))\\|]]/"; # [[ns:page (context)|]]
$p4 = "/\[\[(:?$nc+:|:|)($tc+?)(\s?$tc+)\\|]]/"; # [[ns:pagecontext|]]
$p3 = "/\[\[(:?$nc+:|:|)($tc+?)(\s?\\($tc+\\)|)(, $tc+|)\\|]]/"; # [[ns:page (context), context|]]
$p2 = "/\[\[\\|($tc+)]]/"; # [[|page]]
# try $p1 first, to turn "[[A, B (C)|]]" into "[[A, B (C)|A, B]]"

View file

@ -3927,6 +3927,126 @@ pst title=[[Ns:Somearticle (IGNORED), Context]]
[[Ns:Article, Context|Article]]
!! end
!! test
pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, bug 30149)
!! options
pst
!! input
[[Articlecontext|]]
[[Bar:Articlecontext|]]
[[:Bar:Articlecontext|]]
[[|Articlecontext]]
[[Bar:X Y Z|]]
[[:Bar:X Y Z|]]
!! result
[[Articlecontext|Article]]
[[Bar:Articlecontext|Article]]
[[:Bar:Articlecontext|Article]]
[[Articlecontext]]
[[Bar:X Y Z|X Y Z]]
[[:Bar:X Y Z|X Y Z]]
!! end
!! test
pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, bug 30149)
!! options
pst
!! input
[[Article context|]]
[[Bar:Article context|]]
[[:Bar:Article context|]]
[[|Article context]]
[[Bar:X Y Z|]]
[[:Bar:X Y Z|]]
!! result
[[Article context|Article]]
[[Bar:Article context|Article]]
[[:Bar:Article context|Article]]
[[Article context]]
[[Bar:X Y Z|X Y Z]]
[[:Bar:X Y Z|X Y Z]]
!! end
!! test
pre-save transform: context links ("pipe trick") with parens and no space (Korean style, bug 30149)
!! options
pst
!! input
[[Article(context)|]]
[[Bar:Article(context)|]]
[[:Bar:Article(context)|]]
[[|Article(context)]]
[[Bar:X(Y)Z|]]
[[:Bar:X(Y)Z|]]
!! result
[[Article(context)|Article]]
[[Bar:Article(context)|Article]]
[[:Bar:Article(context)|Article]]
[[Article(context)]]
[[Bar:X(Y)Z|X(Y)Z]]
[[:Bar:X(Y)Z|X(Y)Z]]
!! end
!! test
pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, bug 30149)
!! options
pst
!! input
[[Articlecontext|]]
[[Bar:Articlecontext|]]
[[:Bar:Articlecontext|]]
[[|Articlecontext]]
[[Bar:X Y Z|]]
[[:Bar:X Y Z|]]
!! result
[[Articlecontext|Article]]
[[Bar:Articlecontext|Article]]
[[:Bar:Articlecontext|Article]]
[[Articlecontext]]
[[Bar:X Y Z|X Y Z]]
[[:Bar:X Y Z|X Y Z]]
!! end
!! test
pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, bug 30149)
!! options
pst
!! input
[[Article context|]]
[[Bar:Article context|]]
[[:Bar:Article context|]]
[[|Article context]]
[[Bar:X Y Z|]]
[[:Bar:X Y Z|]]
!! result
[[Article context|Article]]
[[Bar:Article context|Article]]
[[:Bar:Article context|Article]]
[[Article context]]
[[Bar:X Y Z|X Y Z]]
[[:Bar:X Y Z|X Y Z]]
!! end
!! test
pre-save transform: context links ("pipe trick") with parens and no space (Korean style, bug 30149)
!! options
pst
!! input
[[Article(context)|]]
[[Bar:Article(context)|]]
[[:Bar:Article(context)|]]
[[|Article(context)]]
[[Bar:X(Y)Z|]]
[[:Bar:X(Y)Z|]]
!! result
[[Article(context)|Article]]
[[Bar:Article(context)|Article]]
[[:Bar:Article(context)|Article]]
[[Article(context)]]
[[Bar:X(Y)Z|X(Y)Z]]
[[:Bar:X(Y)Z|X(Y)Z]]
!! end
!! test
pre-save transform: trim trailing empty lines
!! options