差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
存在するページ名、および別名に対して自動的にリンクを張ります。
* [auto link]
** 関連するカスタマイズ
-[[WalWiki/カスタマイズ/汎用サブルーチン]] の make_cachedlink()
-[[WalWiki/カスタマイズ/エイリアス定義]] 2003/08/13以前とは実装が変わっています。
** グローバル変数定義
$auto_link_lengthで指定した文字数以上のページに対して自動的にリンクを張ります。
my %auto_link_list; # yakty add [auto link]
my $auto_link_name = q(\b{2}); # yakty add [auto link]
my $auto_link_length = 4; # yakty add [auto link]
** main()内の変更
※ [alias link definition]を適用してる場合には必ずinit_AliasLinkの後にinit_AutoLinkを記述する。
※ [format rule definition]を適用していない場合は[format rule definition]の行は不要。
sub main {
open(LOG, ">>${modifier_dir_data}/log.txt") if ($walrus_debugging >= 2); # Walrus add [for debug]
&init_resource;
&check_modifiers;
&open_db;
&init_form;
&init_InterWikiName;
&init_AntennaSite;
&init_FormatRules; # yakty add [format rule definition]
&init_AliasLink; # yakty add [alias link definition]
&init_AutoLink; # yakty add [auto link]
** inline()内の変更
$line =~ s!
(
((mailto|http|https|ftp):([^\x00-\x20()<>\x7F-\xFF])*) # Direct http://...
|
($bracket_name) # [[likethis]], [[#comment]], [[Friend:remotelink]]
|
($interwiki_definition) # [[Friend http://somewhere/?q=sjis($1)]]
|
($wiki_name) # LocalLinkLikeThis
| # yakty add [auto link]
($auto_link_name) # yakty add [auto link]
)
!
# &make_link($1) # Walrus del [link cache]
# (defined($link_cache{$1})) ? $link_cache{$1} : (length($_ = &make_link($1)) < 1024) ? ($link_cache{$1} = $_) : $_ # Walrus add [link cache] # yakty del [make cached link]
&make_cachedlink($1) # yakty add [make cached link]
!gex;
** init_AutoLink()追加
- 2003-08-19 (Tue) 16:36:28 リンクの途中に改行が入ってしまっていたのを修正
- [[#now]] WikiNameを無効にしていると%fixedpageに対して自動的にリンクが張られないので%fixedpageも自動リンク対象にするように変更
# yakt yadd [auto link] start
# yakty add [auto link] start
sub init_AutoLink
{
my %list;
foreach my $page (sort keys %database){
my @chunk = split(/\//, $page);
my $name = pop(@chunk);
my $link = &make_link($page);
my $link = &make_link(&armor_name($page));
if($1 eq $name){
$page = '';
}
next if(length($name) < $auto_link_length);
$list{$name}{$page} = $link;
}
# alias
my @autolink;
foreach my $name (sort {length($b) <=> length($a)} keys %alias_link_list){
next if($alias_link_list{$name} =~ /<img/);
my $page = &unarmor_name($name);
next if(length($page) < $auto_link_length);
$auto_link_list{$page} = $alias_link_list{$name};
push(@autolink, "\Q$page\E");
}
# fixedpage
foreach my $name (sort {length($b) <=> length($a)} keys %fixedpage){
$auto_link_list{$name} = &make_link(&armor_name($name));
push(@autolink, "\Q$name\E");
}
# database
foreach my $name (sort {length($b) <=> length($a)} keys %list){
if($list{$name}{''}){
$auto_link_list{$name} = $list{$name}{''};
} else {
my $link;
my $escapedname = &escape($name);
if(%{$list{$name}} > 1){
$link = sprintf(qq(<a href="$url_cgi?mycmd=search&mysearchtarget=title&mysearchcombo=and&mymsg=%s" title="$resource{searchthispage}">%s</a>),
#&encode(join(' ', keys %{$list{$name}})),
&encode($name),
$escapedname);
} else {
($link) = (values %{$list{$name}});
$link =~ s|(<a [^<>]*>)(.*)(<\/a>)|$1$escapedname$3|;
}
$auto_link_list{$name} = $link;
}
push(@autolink, "\Q$name\E");
}
if(@autolink){
$auto_link_name = join("|", @autolink);
} else {
$auto_link_name = q(\b{2});
}
$auto_link_name = join("|", @autolink);
}
# yakty add [auto link] end
04063