差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
複数パラメータ対応InterWiki
* [multiparam interwiki]
InterWikiを複数パラメータ($1,$2,$3...)対応にします。
** csv_split()追加
# yakty add [multiparam interwiki] start
sub csv_split {
my ($tmp, $sep) = (@_, ',');
$tmp .= "$sep";
my @values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~/("[^"]*(?:""[^"]*)*"|[^$sep]*)$sep/g);
return @values;
}
# yakty add [multiparam interwiki] end
** multiparam_interwiki()追加
- 2004-02-08 (Sun) 16:35:06 パラメータを一つしかとらないInterWikiNameの場合は:で分解したのをつなげてから渡すように変更。
# yakty add [multiparam interwiki] start
sub multiparam_interewiki {
my ($s, @list) = @_;
if($s =~ /\b(euc|sjis|ykwk|asis|isbn)\(\$2\)/){
for(my $i=1; $i<=@list; $i++){
$s =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$$i\)/&interwiki_convert($1, $list[$i-1])/e;
}
} else {
$s =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, join(":", @list))/e;
}
return $s;
}
# yakty add [multiparam interwiki] end
** make_link()内の変更
if ($name =~ /^$interwiki_name$/ and $interwiki{$1}) {
my ($remoteurl, $localname) = ($interwiki{$1}, $2);
#$remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e; # yakty del [multiparam interwiki]
$remoteurl = &multiparam_interewiki($remoteurl, &csv_split($localname, ':')); # yakty add [multiparam interwiki]
$name = $remoteurl if ($remoteurl =~ /^(https?|ftp):[^\?]+\.(gif|png|jpe?g)$/ and $use_autoimg);
}
if ($chunk =~ /^$interwiki_name$/ and $interwiki{$1}) {
($chunk, my $localname) = ($interwiki{$1}, $2);
#$chunk =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e; # yakty del [multiparam interwiki]
$chunk = &multiparam_interewiki($chunk, &csv_split($localname, ':')); # yakty add [multiparam interwiki]
}
* [multiparam interwikibox]
InterWikiBoxも複数パラメータ対応に。
** グローバル変数定義
#my $embed_interwiki = '^\[\[#(box|text|password):(\S+)\]\]$'; # Walrus add [InterWikiBox] # yakty del [multiparam interwikibox]
my $embed_interwiki = '^\[\[#(((box|text|password)(\(\d+\))?:)+)(\S+)\]\]$'; # Walrus add [InterWikiBox] # yakty add [multiparam interwikibox]
** embedded_to_html()内の変更
# Walrus add [InterWikiBox] start
#} elsif ($embedded =~ /$embed_interwiki/ and my $remoteurl = $interwiki{$2}) { # yakty del [multiparam interwikibox]
# $_ = &make_interwiki_box($1, $2); # yakty del [multiparam interwikibox]
} elsif ($embedded =~ /$embed_interwiki/ and my $remoteurl = $interwiki{$+}) { # yakty add [multiparam interwikibox]
$_ = &make_interwiki_box($1, $+); # yakty add [multiparam interwikibox]
return ($_) ? $_ : &escape($embedded);
# Walrus add [InterWikiBox] end
** do_interwiki_box()内の変更
# Walrus add [InterWikiBox] start
sub do_interwiki_box {
my $remoteurl = $interwiki{$form{'myintername'}};
if ($remoteurl) {
#$remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $form{'mylocalname'})/e; # yakty del [multiparam interwikibox]
$remoteurl = &multiparam_interewiki($remoteurl, param('mylocalname')); # yakty add [multiparam interwikibox]
print "Location: $remoteurl\n\n";
exit(1);
} else {
&do_read;
}
}
# Walrus add [InterWikiBox] end
** make_interwiki_box()内の変更
sub make_interwiki_box {
my ($localname, $intername) = @_;
my %ignoretype = (
'box' => 'text',
'text' => 'text',
'pass' => 'password',
'password' => 'password'
);
# yakty add [multiparam interwikibox] start
my @names = split /:/, $localname;
my @boxes;
foreach my $name (split /:/, $localname){
next unless($name =~ /^(.+?)(\((\d+)\))?$/);
next unless(defined($ignoretype{$1}));
my ($type, $size) = ($1, $3);
push @boxes, qq(<input type="$ignoretype{$type}" name="mylocalname" value="" size="$size">);
}
# yakty add [multiparam interwikibox] end
#my $converted = ($ignoretype{$localname}) ? <<EOD : undef; # yakty del [multiparam interwikibox]
return (@boxes) ? <<EOD : undef; # yakty add [multiparam interwikibox]
<form action="$url_xcg" method="post"><!-- yakty mod [for XREA] -->
<input type="hidden" name="mycmd" value="interwikibox">
<input type="hidden" name="mypage" value="$form{mypage}">
<input type="hidden" name="myintername" value="$intername">
$intername:
<!--input type="\$ignoretype{\$localname}" name="mylocalname" value="" size="50"--><!-- yakty del [multiparam interwikibox] -->
@{[join("\n", @boxes)]} <!-- yakty add [multiparam interwikibox] -->
<input type="submit" value="Submit">
</form>
EOD
}
02528