【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

AutomaticLinkPatchForYukiWiki - YukiWiki2.05に、CafeWikiのAutomaticLinkを追加するパッチ。

目次

YukiWiki2.05に、CafeWikiAutomaticLinkを追加するパッチ。

経緯

要望が出たので作ったのですが、一歩遅かったみたいです。

パッチ (diff -c wiki.cgi patched_wiki.cgi)

 *** wiki.cgi	Sat Mar  1 10:11:19 2003
 --- patched_wiki.cgi	Sat Mar  1 10:11:03 2003
 ***************
 *** 464,473 ****
   
   sub text_to_html {
       my ($txt, %option) = @_;
 +     foreach my $pagename (sort { length($b) <=> length($a) or $b <=> $a } keys %database) {
 +         if (length($pagename) < 1) { next; }
 +         $txt =~ s|(?<![\[\[])(\Q$pagename\E)(?![\]\]])|[[$1]]|g;
 +     }
       my (@txt) = split(/\n/, $txt);
       my (@toc);
       my $tocnum = 0;
 --- 464,469 ----

解説

単純な追加パッチですので一目瞭然ですが、

 sub text_to_html {
     my ($txt, %option) = @_;

の直後に+で始まる部分を追加するだけです。

2行目は、3文字以下のページ名はリンクにならないようにする処理です。 好みに合わせて条件を変更して下さい。

つくったひと、および、ライセンス

つくったひと
Coffee
ライセンス
YukiWiki2に準じます。また、もしYukiWiki2にライセンスの変更があった場合、それに追随します。

問題点?

この実装(?)だと、InterWikiの中にAutomaticLinkに該当する文字列があると誤動作するです。(←見出しにも) まあそれぐらいは自分で解決してみます!(でも、簡単な解決法があったらおしえてちょ) -kur

あう。ミスってしまいました。 sort keys の結果をグローバル変数にキャッシュして無駄を省いたあと、 make_link?(行にリンクを貼る関数)の先頭あたりに置くといいかもです。--Coffee