*AutoLinkの仕掛けを作る -ページ: BugTrack -投稿者: [[ぱんだ]] -優先順位: 低 -状態: 提案 -カテゴリー: 本体新機能 -投稿日: 2003-01-22 (水) 16:28:15 -バージョン: 1.3.3 **メッセージ [[極悪版 wiki>極悪:AutoLink]]などで実装されている、「既存ページ名の自動リンク」をPukiWikiに実装してみます。 最初の版は<pre>~</pre>の中も置換してしまうというダサい動作だったので、まじめに作ってみました。 -$nowikinameを1にすると、WikiNameの自動リンクを抑制します。 -$autolinkを1以上の数値にすると、$autolink文字以上の長さのBracketNameページ名と合致する文字列が自動的にリンクになります。 -$nowikiname=1かつ$autolink>0のときは、WikiNameのページもAutoLinkで処理します。 --つまり、ページが存在するWikiNameはリンクになり、そうでない場合はリンクになりません。 ***ダウンロード PukiWiki/1.3.3用です。 #ref(193_1.3.3.diff) ---- **コメント -[[極悪版 wiki>極悪:AutoLink]] のようなすでに存在するWikiNameへは自動でリンクしてくれると嬉しいですが・・・。Wikiらしくていいなぁと -- [[baniko]] SIZE(10){2003-01-22 (水) 09:46:36} --これってWikiNameじゃなくってBracketNameのことでしょうか。BracketNameへの自動リンクは副作用がかなりありそう… -- [[reimy]] SIZE(10){2003-01-22 (水) 09:50:09} -表現がまずかったですね。存在するページ名へのリンクです。 -- [[baniko]] SIZE(10){2003-01-22 (水) 09:53:57} --BracketNameによるページへの自動リンクは副作用があるので…。採用するとすればオプション扱いかな。 -- [[reimy]] SIZE(10){2003-01-22 (水) 10:06:22} --仕掛け自体は簡単なんですが。ページが増えると結構重い処理になります。 -- [[ぱんだ]] SIZE(10){2003-01-22 (水) 13:25:44} --ページを作成したときに、ページ名のindex-listをファイルに落とすようにして、そいつで処理するのでは軽減できないでしょうか? -- [[baniko]] SIZE(10){2003-01-22 (水) 13:28:36} ---- -よさげな感じですね。テストして負荷なども調べてみようと思います。あとは、4バイトが決めうちでいいのか・・・。 -- [[baniko]] SIZE(10){2003-01-23 (木) 12:23:27} -CafeWikiを遅ればせながらテストしております。にほんごWikiName自動リンク機能はすばらしかったです。やはり必須機能ですね。 -- [[tejicube]] SIZE(10){2003-01-23 (木) 12:24:59} --その機能まってました!どのへんに差し込めばいいでしょうか?html.phpの -- [[tejicube]] SIZE(10){2003-01-23 (木) 12:30:41} -レポートお待ちしてます :) -- [[ぱんだ]] SIZE(10){2003-01-23 (木) 12:59:34} --$pageからブラケットを取ったらうまく動きました! -- [[tejicube]] SIZE(10){2003-01-23 (木) 14:21:12} if (!preg_match("/^$WikiName$/",$page) and strlen($page) >= 4) { $page = str_replace("[","",$page);//ブラケット左側を取る $page = str_replace("]","",$page);//右側も取る $temp = '(?:'.preg_quote($page,'/').')'; $arr[$temp] = strlen($temp); } ---これではダサいので、もっとかっこよく実装してくださいね。。(汗) -- [[tejicube]] SIZE(10){2003-01-23 (木) 14:24:14} -193_1.3.3.diffを添付しました。 -- [[ぱんだ]] SIZE(10){2003-01-23 (木) 16:12:09} -if ($arr[19] != '') { は if ($arr[19] != '') がデフォルトですかね。Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}''が出ました。まだリンク具合は確認してませんが実験してみます。 -- [[たらこせる]] SIZE(10){2003-01-23 (木) 16:15:36} -ってもうdiffで修正済みですね。すんません。 -- [[たらこせる]] SIZE(10){2003-01-23 (木) 16:17:54} -''InterWikiテクニカル''がInterWikiとテクニカルに分かれてしまいますね。func.php/get_autolink_pattern()の array_unshift($arr,"(?:$WikiName)"); は array_push($arr,"(?:$WikiName)"); のほうがいいかもしれません。 -- [[ぱんだ]] SIZE(10){2003-01-23 (木) 16:24:30} -稼動してます。負荷かかってるかなあ。 -- [[たらこせる]] SIZE(10){2003-01-23 (木) 16:26:45} -やっぱり [[WikiName]] と WikiName のどっちを取るかという問題になる…。 -- [[ぱんだ]] SIZE(10){2003-01-23 (木) 16:35:37} --ちなみにAutoLinkでは[[WikiName]]が存在したとしても WikiNameを見に行きます。(仕様) -- [[ぱんだ]] SIZE(10){2003-01-23 (木) 16:37:23} -これ、やっぱり面白いですね...。次期検索結果画面をBracketName化した時点でinclude作成(ほげ?表示をしない)してくれたりしたらその後のファイル構築もかなり面白くなりそう。 -- [[たらこせる]] SIZE(10){2003-01-23 (木) 17:12:20} --よくわかりません。 検索結果画面をBracketName化とはいったい… -- [[ぱんだ]] SIZE(10){2003-01-26 (日) 21:43:44} --よく、ではなくぜんぜんわかんないですね...。興奮して書き込んでるようで何を思ったんだったか...。1.通常の編集時にBracketNameを作成、2.現在は[[ほげ]]と表示されるが勝手にページを作ってしまう3.勝手につくったページの内容はその単語のサイト内使用頻度の検索結果、といったことを考えていたように記憶していますが何が面白いのか''自分でわからなくなっています''。 -- [[たらこせる]] SIZE(10){2003-01-26 (日) 22:23:08} -193_1.3.3.diffを差し替えました。 array_unshiftを(array_shiftではなく)array_pushにしただけです。 -- [[ぱんだ]] SIZE(10){2003-01-23 (木) 17:42:59} -試してみました。大体導入前の 2~5 倍の負荷が掛かっている模様。現在はページ数が少ないから良いけれど、これからのことを考えると……もうちょっと高速化できるといいなぁ。 -- [[未亜]] SIZE(10){2003-02-16 (日) 19:49:58} -初めまして。(おそらく)多少効率のいいAutoLinkPatternを生成する関数(autolink2.php)を書いてみました。 -- [[hirofummy]] SIZE(10){2003-02-22 (土) 01:40:27} --PukiWiki1.3.3に最初からついてるページ+ランダムに生成した約2000ページでテストしてみたところぱんださんのより約0.5sec高速でした。 -- [[hirofummy]] SIZE(10){2003-02-22 (土) 01:43:23} --また、PukiWiki1.3.3に最初からついてるページのみでのテストでは有意な差は確認できませんでした。 -- [[hirofummy]] SIZE(10){2003-02-22 (土) 01:44:14} --ぱんださんのも私のもget_existpages関数にかなり時間を食われているようでしたのでページ一覧、あるいは生成したパターンをキャッシュすることで高速化を図ることができると思います。 -- [[hirofummy]] SIZE(10){2003-02-22 (土) 01:47:34} --テスト環境はPenIII450MHz,Mem640MB,OSwin2kです。 -- [[hirofummy]] SIZE(10){2003-02-22 (土) 01:49:57} --数字上は100ページくらいでも差(上記テスト環境において0.02sec程度でもちろん体感できません)がでるのですが、いかんせんテストデータのページ名が実際にはありえないようなもの(4~15文字のランダムな英数字の羅列)なので…。 -- [[hirofummy]] SIZE(10){2003-02-22 (土) 02:10:31} ---こりゃあ、うちのを1.4にして、実験するのがよさそうだな。1.3.xよりも重くなるのはちょっと…ですが(^^;; -- [[reimy]] SIZE(10){2003-02-22 (土) 08:06:13} #comment