145
145
my $man = ' A-Za-z0-9' ; # mixed alphanumeric
146
146
my $iwSitePattern = " ([A-Z][$man ]+)" ;
147
147
my $iwPagePattern = " ((?:'[^']*')|(?:\" [^\" ]*\" )|(?:[${man} \_\~\%\/ ][$man " . ' \.\/\+\_\~\,\&\;\:\=\!\?\%\#\@\-]*?))' ;
148
- my $varPattern = " ([A-Za-z0-9_]+)" ;
148
+ my $varPattern = " ([${man} _]+)" ;
149
+ my $wwPattern = " [A-Z][a-z]+[A-Z][$man ]*" ;
149
150
my @rules = (
150
151
151
152
# Remove variable-setting lines (they will already have been parsed)
181
182
q# s/^%META.*//g# , # Remove remaining meta tags
182
183
183
184
# %INCLUDE%
184
- q# s/%INCLUDE\{"? $web\.(. *?)"?\ }%/{{:<nop>$1}}/g# , # %INCLUDE{$web.XXX}% --> {{XXX}}
185
- q# s/%INCLUDE\{"?(. *?)"?\ }%/{{:<nop>$1}}/g# , # %INCLUDE{XXX}% --> {{XXX}}
186
- q# s/%INCLUDE\ {.*?\ }%//g# , # remove remaining %INCLUDE{...}%'s
185
+ q# s/%INCLUDE{\s*(?: $web\.|)([$man] *?)\s* }%/{{:<nop>$1}}/g# ,
186
+ q# s/%INCLUDE{\s*"(?:$web\.|)([$man] *?)".*? }%/{{:<nop>$1}}/g# ,
187
+ q# s/%INCLUDE{.*?}%//g# , # remove remaining %INCLUDE{...}%'s
187
188
q# s/%STARTINCLUDE%/<onlyinclude>/# ,
188
189
q# s/%STOPINCLUDE%/<\/onlyinclude>/# ,
189
190
233
234
#
234
235
# WikiWords
235
236
#
236
- q# s/$web\.([A-Z][A-Za-z0-9 ]*)/makeLink($1)/ge# , # $web.WikiWord -> link
237
- q# s/([A-Z][A-Za-z0-9 ]*)\.([A-Z][A-Za-z0-9]* )/<nop>$1.<nop>$2/g# , # OtherWebName.WikiWord -> <nop>OtherWebName.<nop>WikiWord
237
+ q# s/$web\.([A-Z][${man} ]*)/makeLink($1)/ge# , # $web.WikiWord -> link
238
+ q# s/([A-Z][${man} ]*)\.($wwPattern )/<nop>$1.<nop>$2/g# , # OtherWebName.WikiWord -> <nop>OtherWebName.<nop>WikiWord
238
239
q# s/<nop>([A-Z]{1}\w+?[A-Z]{1})/!$1/g# , # change <nop> to ! in front of Twiki words.
239
- q@ s/(?:^|(?<=[\s\(]))([A-Z][a-z]+[A-Z][A-Za-z0-9]* )/makeLink($1,spaceWikiWord($1))/ge@ , # WikiWord -> link
240
+ q@ s/(?:^|(?<=[\s\(]))($wwPattern )/makeLink($1,spaceWikiWord($1))/ge@ , # WikiWord -> link
240
241
q# s/!([A-Z]{1}\w+?[A-Z]{1})/$1/g# , # remove ! in front of Twiki words.
241
242
q# s/<nop>//g# , # remove <nop>
242
243
538
539
my $interwikiFile = getInterwikiFile();
539
540
open INTERWIKI, " <$interwikiFile " ;
540
541
while (<INTERWIKI>) {
541
- if (/ ^\|\s *([A-Z][A-Za-z0-9 ]+)\s *\|\s *(.*?)\s *\|\s *(.*?)\s *\| .*$ / ) {
542
+ if (/ ^\|\s *([A-Z][${man} ]+)\s *\|\s *(.*?)\s *\|\s *(.*?)\s *\| .*$ / ) {
542
543
my ($prefix , $url , $tooltip ) = ($1 , $2 , $3 );
543
544
$prefix = lc ($prefix );
544
545
$url =~ s /\$ page/ \$ 1/ g ;
@@ -577,7 +578,7 @@ sub _translateText {
577
578
sub makeLink {
578
579
my ($link , $text ) = @_ ;
579
580
my $isAnchor = ($link =~ / ^#/ );
580
- my $isInternal = ($link =~ / ^(((Media|File):[A-Za-z0-9 \.\- _,]+)|((|[A-Z][A-Za-z0-9 ]*\. )([A-Za-z0-9 ]+)(|\# [A-Za-z0-9_ ]+)))$ / );
581
+ my $isInternal = ($link =~ / ^(((Media|File):[${man} \.\- _,]+)|((|[A-Z][${man} ]*\. )([${man} ]+)(|\# [${man} _ ]+)))$ / );
581
582
my $isInterwiki = ($link =~ / ^$iwSitePattern :$iwPagePattern $ / );
582
583
$link = stripInterwikiQuotes($link ) if $isInterwiki ;
583
584
return ($isAnchor || $isInternal || $isInterwiki ) ? makeInternalLink($link ,$text ) : makeExternalLink($link ,$text );
@@ -586,7 +587,7 @@ sub makeLink {
586
587
sub makeInternalLink {
587
588
my ($link , $text ) = @_ ;
588
589
$link =~ s / ^$web\. // ;
589
- if ($renamePages && $link =~ / ^[A-Za-z0-9_ ]+$ / ) { $link = spaceWikiWord($link ) }
590
+ if ($renamePages && $link =~ / ^[${man} _ ]+$ / ) { $link = spaceWikiWord($link ) }
590
591
$text = $text || $link ;
591
592
return ($link eq $text ) ? " [[<nop>$link ]]" : " [[<nop>$link |" .protectWikiWords($text )." ]]" ;
592
593
}
@@ -614,7 +615,7 @@ sub stripInterwikiQuotes {
614
615
615
616
sub protectWikiWords {
616
617
my ($text ) = @_ ;
617
- $text =~ s / ([A-Z][a-z]+[A-Z][A-Za-z0-9]* )/ <nop>$1 / g ;
618
+ $text =~ s / ($wwPattern )/ <nop>$1 / g ;
618
619
return $text ;
619
620
}
620
621
0 commit comments