差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
URLから登録されているInterWikiに自動変換
* [smart interwiki]
[[YukiWiki:SmartInterWiki]]を実装してみました。
ブラケットで括られたリンク内にInterWikiとして登録されているURLがあれば
InterWikiに自動的に変換します。
** url_convert()追加
- 2004-01-16 (Fri) 17:07:09 ykwk($1)にもとりあえず対応したつもり(未テスト)
- 2004-01-23 (Fri) 23:01:00 SmartInterWiki変換を行わない条件を追加
# yakty add [smart interwiki] start
sub url_convert {
my ($url) = @_;
foreach my $name (keys %interwiki){
if($interwiki{$name} =~ /(.+)\b(euc|sjis|ykwk|asis|isbn)\(\$1\)(.*)/){
my ($head, $type, $tail) = ($1, $2, $3);
if($url =~ /\Q$head\E(.+)\Q$tail\E/){
my $param = $1;
next if($param =~ /[=\&]/);
if($type eq 'sjis' or $type eq 'euc'){
$param = &decode($param);
&code_convert(\$param, $kanjicode);
} elsif($type eq 'ykwk'){
$param = &decode($param);
if(&is_bracket_name($param)){
$param = &unarmor_name($param);
}
}
return $name . ":" . $param;
}
}
}
return $url;
}
# yakty add [smart interwiki] end
** smart_interwiki()追加
# yakty add [smart interwiki] start
sub smart_interwiki {
my $chunk = shift;
return $chunk if($chunk =~ /''''''/);
return $chunk if($chunk =~ /\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/);
$chunk =~ s!((mailto|http|https|ftp):([^\x00-\x20()<>\x7F-\xFF&?])*(\?([^\x00-\x20()<>\x7F-\xFF])*)?)!
&url_convert($1)!ex;
return $chunk;
}
# yakty add [smart interwiki] end
** do_write()内の変更
- 2004-01-16 (Fri) 13:18:22 エイリアスでも処理できるように変更
- 2004-01-16 (Fri) 15:28:22 ページがAliasLinkName,InterWikiNameの場合には置換を行わないように変更
- 2004-01-16 (Fri) 18:17:34 AntennaSiteNameの場合にも置換を行わないように変更
- 2004-04-14 (Wed) 00:28:04 変換位置を差分を取得する前に変更
if ($form{mymsg}) {
# yakty add [smart interwiki] start
if($form{mypage} ne $AliasLinkName and $form{mypage} ne $InterWikiName and $form{mypage} ne $AntennaSiteName){
$form{mymsg} =~ s/(\[\[(.+?)\]\])/&smart_interwiki($1)/gex;
}
# yakty add [smart interwiki] end
if (&conflict($form{mypage}, $form{mymsg})) {
return;
}
$form{mymsg} =~ s/\x0D\x0A|\x0D|\x0A/\n/g; # Walrus add [unify new-line]
# yakty add [smart interwiki] start
if($form{mypage} ne $AliasLinkName and $form{mypage} ne $InterWikiName and $form{mypage} ne $AntennaSiteName){
$form{mymsg} =~ s/(\[\[(.+?)\]\])/&smart_interwiki($1)/gex;
}
# yakty add [smart interwiki] end
02895