wema 0.5.0 のソースを読む(Perl 版との比較とデータの構造) [wema]
http://blog.so-net.ne.jp/nakagami/2006-01-18-1 の続き
wema4perl のソースアーカイブの中に wema050.zip というファイル名で、オリジナルの
Ruby 版 Wema の version 0.5.0 のソースが入っている。
wema4perl のソースと比較してみる。
[wema.css]
[wema.js]
まったく同じ。
[wema.tmpl]
埋め込む変数の記法と、template に式が埋め込めるかどうかで書き方が微妙に異なるだけでほぼ同じ。
[data フォルダの中のデータ形式]
同じっぽい。
となっていて、違うのは wema.cgi の中身だけ。
しかも、違いは、perl 版では
1. SWEEP の処理がある
2. 関数 sub include_template() がある
3. 関数 sub escHTML() がある
というところを除くと、関数名からローカル変数やロジックまで、言語の相違による違い以外は、ほとんど同じ。
1. については、Ruby 版 0.5.1 で追加された機能のようでそれに Perl 版が追随した模様。
wema.cgi には、sweep の処理が追加されてるけど、wema.tmpl には反映されてないような・・・
2.3. は、Ruby では組み込みで含まれている機能の同等なものを Perl で書いたもの。
処理はびっくりするほど同じだった。これほど同じにする必要はないだろうに、と思うくらい。
perl4wema の readme.txt の中で「翻訳」とある意味がよく分かった。
・・・というわけで、私のように Perl は少し読めるけど Ruby は全然分からないとか、その逆の人は、両者を見比べてみると、式とか制御文とか変数名の使い方を知るのにいいかも。
・・・ところで、改めてデータ構造について真剣に見てみる
write_check(), disp_content() あたりを見ると分かるけど、ちょっと勘違いしてた。
.namemap で ID ->名前の対応の入っている(TAB区切り)ファイルのは、以前書いたとおり。
で、ページを作ると、その ID のディレクトリを data ディレクトリに作る
アイテムを追加すると、対応したファイルが1つできる。
ページとアイテムの ID (=ファイル名)は YYYYMMDDHHMMSS っていう感じで付くけど、
FrontPage と DustBox は特別扱いで、FrontPage と DustBox は 「ID = 名前 = 内部的なファイル名」になっている。
アイテムのファイルは、拡張子 [.txt] が付けられ、LOCK すると[.txf] に rename される。
アイテムのファイルの中身は
$id($pg) ページ名
$ln($links) ライン属性
$left X 座標
$top Y 座標
$color 色
$bgcolor 背景色
$zindex Z order
$body 内容
が、改行で区切られている(みたい)。$body は、改行で区切られててもテキストファイルの残り全部が入ってる。
コメント 0