[1] Yuki::YukiWikiDBNS
は、 Yuki::YukiWikiDB2
を拡張 (改悪)
して無理矢理名前空間に対応させたものです。
その名に反して、 YukiWiki
とは関係ありません。
[2] ここで名前空間とは、 key の名前に応じてかってに directory を作ってその中に key の file を突っ込む仕組みです。 WikiName における名前空間に対応して木構造が出来るようになっています。 もっとも、 WikiName に名前空間があるかないかと WikiDB の木構造は SuikaWiki の実装的には無関係です。 WikiName の名前空間を使うのに YukiWikiDBNS を使わないといけないわけではありません。 逆に YukiWikiDBNS を使うからといって WikiName の名前空間を使う必要もありません。 (もっとも、 WikiName 名前空間なしで SuikaWiki が動くかは怪しいです。)
[3] key 名に //
が含まれていると、これを名前空間区切子とみなします。
これが directory 区切りに置換えられます。
(今の実装では hardcode
されているので、この区切子をかえることは出来ません。)
例えば a//b という key は、 a の directory のしたの b という file に格納されます。 実際には file の名前は encode された上に接尾辞がつきますから、 62.ns/63.txt になります。 このうち .txt の部分は変更可能ですが、 .ns の部分は hardcode されていてかえることが出来ません。
////
のような部分を含むとあまり嬉しくありません。 (.
で始まる directory や file が出来たりしますし)。今の実装ではそういうのはデータベースに与える前に正規化することになってるのでチェックしてませんが、これはちょっと SuikaWiki の今の WikiName の名前空間実装にべったりしすぎかもしれません。[7]
と、ここに書いてあるのは、 SuikaWiki 2 版の Yuki::YukiWikiDBNS
の実装の話です。
SuikaWiki 3.0 では、 SuikaWiki::DB::FileSystem::YukiWikiDBNS
を WikiDB 界面の wrapper としていて、間接的に access しているので、表面的には幾つかの問題 (名前空間区切子が固定であるとか) は解決されています。
もっとも、 SuikaWiki 2 の場当たり的な YukiWikiDBNS の code を適当に包んでいるだけの現状の code は綺麗ではないので、いずれ書き直すつもりではいます。
(名無しさん 2004-03-19 11:56:10 +00:00)