H2H Classic Implementation
H2H とは?
H2H とは、2001年3月からわかば <wakaba@suikawiki.org> が開発していたマーク付け言語
及びその Perl での実装の総称です。
それまでわかばは HNS <http://www.h14m.org/> を使っていましたが、
その CGI を置いていた無料サーバーが閉鎖されたため、 CGI が使用できない
無料サーバーに移転を余儀なくされました。その時に書いたのが最初の H2H
の実装です。 (HNS にも静的生成とかはあったはずなのに、なんでそんなことを
したのかは謎です。気にしてはいけません。) その時の H2H とは、 HNF
(HNS の記述形式) to HTML の略でした。
その後何回か実装を書き直して、最終的に2001年4月から9月くらいにかけて
開発されたのが現在の実装です。完全に新しい実装ではあるのですが、依然
HNS の面影が感じられます。
記述形式としての H2H は、 H2H/0.9 と H2H/1.0 の2つがあります。
いずれも最終的な実装で HTML に変換可能ですが、 H2H/0.9
は互換性のためだけに残されており、新しい文書には使われていません。
(構文解析の方法にも少し違いがあって、 0.9 は比較的 HNS に似ています。)
H2H/0.9 は、 HNF のうちわかばが使用していた機能に、 RUBY 命令や ABBR
命令のような独自拡張を加えたものです。しかしそれでも HNS
に読ませれば多少エラーが出る程度、拡張機能を使わなければ全く問題ないものです。
しかし HNS との互換性を保ったままでは要求される機能を実装できないことから、
互換性を放棄 (すなわち、いずれ HNS に戻ることを断念) して非互換変更を
加えた新しい形式, H2H/1.0 が作られました。
H2H/1.0 の文書は、必ず「H2H/1.0」とだけ書かれた行 (魔法行)
から始まりますから、これがない H2H/0.9 とは確実に区別できます。
このように H2H はそもそも日記のための記述形式でしたが、 H2H/1.0
はある程度構造が似た (章節構造を持つ) 文書のための比較的汎用的な
マーク付け言語として設計されました。ちょっとしたメモ程度のものを
書くときに HTML を直書きせずに、中間形式として使うことで、
用語集や簡易予定表や掲示板などの応用を想定していました。
更に、静的生成するのみならず、サーバー側で動的に生成する実装も
実験的に作られました。
しかし、その後は長期間手が付けられずに放置され、現在に至っています。
開発が止まったのは、開発者の多忙はもちろんのこと、より応用範囲を拡大する
には記述形式の更なる改良と、既存実装の再度の全面書き直しが必要となること、
この作業の膨大さに嫌気がさしたとでも言いましょうか。 (最終的な実装は
少しはオブジェクト指向を文字通り志向したのではありますが、
中途半端なものであり、しかもテーマと解析系を完全に分離できていません。
このままの実装では現実的に維持さえ面倒です。)
ちなみにその後わかばは、 wiki が同じようなことを目指せるのに気づいて
すっかり気に入ってしまいました。 H2H の構想に、後1つリンクを加えれば
同じものが出来たのに、なんて思ったりもしますが、まあ気にしません。
Wiki の記述形式に H2H/2.0 を採用するべくその案を練っていますが、
まだまだ先のことになりそうです。
ハードディスク内の整理をしたこの機会(謎)に、いまわかばが日記を書くのに
とりあえず何とか騙し騙し動かしている実装一式を CVS に入れときます。
(この実装を書いた当初は CVS とか何も使ってなかったんです。で、ずっとそのまんま。)
もうこれを基に開発するのは無理でしょうが、いつかどこかでだれかのなにかの
役に立つかもしれないなあなんて思いつつ。
構成ファイル一覧
このディレクトリ直下のファイル群は、具体的な応用です。例えば h2h-diary.pl
を使うと H2H 文書群から日記の HTML ファイルを生成できます。直下ファイル群
は大体経路名が直書きされていますから、適当に修正しないと絶対に動きません。
H2H/ 以下は処理系です。更にその奥にあるテーマ系ディレクトリの中身は、
命令 (要素みたいなもの。) の HTML 転写時の付加指定とか、 header や
footer にする部分とかになってます。
2001/08/14 12:34 86 .rc
2003/07/19 21:07 <DIR> H2H
2001/05/22 17:27 1,366 h2h-diary-09.pl
2001/08/13 23:33 2,034 h2h-diary.pl
2001/08/14 12:34 1,975 h2h-glossary.pl
2001/10/13 10:21 2,457 H2H.pm
2001/06/09 13:39 1,394 hnfmake.pl
2003/07/18 22:12 686 hnfopen.pl
2001/04/27 18:50 1,330 makeglossary.pl
H2H
2001/08/13 16:45 9,063 original-h2h.bak.pm
2003/07/19 21:07 <DIR> V090
2001/08/13 17:29 9,365 V090.pm
2003/07/19 21:07 <DIR> V100
2001/09/05 19:23 6,650 V100.pm
H2H/V090
2003/07/19 21:07 <DIR> default
2003/07/19 21:07 <DIR> general
2003/07/19 21:07 <DIR> glossary
2003/07/19 21:07 <DIR> suika
H2H/V090/default
2003/07/19 21:00 169 foot.htt
2001/08/07 21:31 4,085 head.htt
2001/11/04 14:05 9,809 theme.ph
H2H/V090/general
2001/04/03 12:47 18 foot.htt
2001/04/03 12:47 834 head.htt
2001/04/21 15:08 1,769 theme.ph
H2H/V090/glossary
2001/04/03 12:47 18 foot.htt
2001/04/03 12:47 834 head.htt
2001/04/03 14:40 588 theme.ph
H2H/V090/suika
2001/04/03 12:47 18 foot.htt
2001/08/20 17:28 356 head.htt
2001/08/20 17:38 2,159 theme.ph
H2H/V100
2003/07/19 21:09 <DIR> Command
2003/07/19 21:09 <DIR> Theme
H2H/V100/Command
2001/10/13 10:40 7,416 Base.pm
2001/08/11 09:32 355 Error.pm
2002/01/23 22:35 18,152 Main.pm
H2H/V100/Theme
2001/09/05 19:22 2,825 Default.pm
2001/08/13 19:21 18 footer.htt
2001/08/20 18:16 237 Fuyubi-day-footer.htt
2002/03/11 13:44 4,437 Fuyubi-day-header.htt
2001/08/20 19:27 6,018 Fuyubi-day.pm
2002/03/10 18:00 691 Fuyubi-footer.htt
2003/03/15 19:26 2,643 Fuyubi-header.htt
2003/07/16 07:36 6,886 Fuyubi.pm
2001/08/14 11:45 64 Glossary-footer.htt
2001/08/14 11:44 707 Glossary-header.htt
2001/11/14 17:19 3,766 Glossary.pm
2001/08/13 16:04 85 header.htt
ライセンス
多くのファイルには LICENSE の章があってそこに書いてあるみたいです。
明記されていないものは、とりあえず (HNS 由来の code がまだ入ってたら
まずいので) GNU GPL2 としておきます。