存在するページ名、および別名に対して自動的にリンクを張ります。
[auto link]
関連するカスタマイズ
グローバル変数定義
$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 リンクの途中に改行が入ってしまっていたのを修正
- 2003-08-20 (Wed) 16:53:12 WikiNameを無効にしていると%fixedpageに対して自動的にリンクが張られないので%fixedpageも自動リンク対象にするように変更
# 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(&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"); } $auto_link_name = join("|", @autolink); } # yakty add [auto link] end