From: rubikitch Date: 2000-09-02T12:47:07+09:00 Subject: [ruby-list:24700] Re: RDP のフォーマット案 From: Koji Arai Subject: [ruby-list:24648] RDP のフォーマット案 Date: Thu, 31 Aug 2000 00:02:09 +0900 るびきちです。 反応遅れてすみません。 > 新案(RDのマクロ)についてつらつらと考えていました。 このメールのフォローないから・・・ つけてあげないとかわいそうすぎる。 長すぎると敬遠されるのかな。 > RDは拡張しにくいのが難点なのは前にも書いたとおりです。これを補うために > RD のマクロを用意する考えはそんなに悪くはないと思います。前に「RD の > wrapper を用意する」と例示しましたが、これよりはマクロ展開(のようなも > の)を RD の一機能にした方が良いように思います。というのも、ruby に埋め > 込まれた RD を処理することを考えた場合、ツールがRDと拡張RDで分かれてい > るとドキュメントの内容からユーザがどのツールを使うか判断しなければなり > ません。それよりは、例えば、 そうです。 ユーザが整形する場合のことを考えたら、まずいですから。 あくまで、RDにはこういった((*能力もある*))というだけであって、 基本は単純、それが一番だと考えてます。 RDの書き方についてのドキュメントも基本編と応用編に分けるべきかも。 RDを単に書くだけだったら基本編・・・つーかInlineゼロでもよい。 でもって応用編にある機能を使えばいくぶん御利益があってなおかつカッコイイと。 > =begin マクロ名 > ... > =end > > のような記述から RD がどのマクロを使うか選べるようにした方が便利です。 filter機能とかぶらないように注意しなければ。 「マクロ名」に相当する部分の名前空間(笑)が問題になりそうです。 たとえば「マクロ名」として認識させるためには % なり # なり接頭辞でもつければいいのかな。 =begin %foomacro ... =end > この点に関して何かご意見はありますか?拡張した記法のRDもRDと呼んでもよ > いでしょうか? 俺的にはマクロ処理もひっくるめて RD にしちゃってもいいとは思います。 > いっそ、rubyのフォーマットとできるだけ似せるというのもあり? > > =class Class < Superclass > ==include Foo > ==def self.classmethod() > ==def method() なかなかよさげ。 記号をどうするかはまた別の議論ということで。 > RDファイル --> 前処理 --> RD parser --> 後処理 --> HTMLファイル > > 前処理の切り替えでどのようなドキュメントを書くかを決定し、後処理の切り > 替えでどのようなフォーマットを出力するかを決定します。うん美しいですね。 ふむっ。 俺の中では「前処理」と「RD parser」が合体したイメージです。 すなわち、 filter 機能がRDの拡張機能として用意されているのなら、 Macro機能も拡張機能として用意するということです。 (1) Macro Framework を用意する。 * マクロは決まった形をとっている。 * いくつかの組み込みマクロを用意する。method, classなどについて。 * でもって組み込みマクロはRDな人間なら容易に設定/拡張できる。 * 新しいマクロ案があったら要望する(笑) (2) Macro → HTML * マクロはRDにではなくて((*いきなりHTMLへ*))落とす。 すなわち、Visitorレベルで処理する。 * これなら、情報は落とさなくて済むような気がする。 > おそらく大半の人は問題ないと思うのでしょう(HTMLが大半の用途に十分なよ > うに)。元のRDが好きな人はRDのコア部分がその程度の情報しか残さないこと > を問題視していないのですよね。結局 RD は HTML を書きやすくするものです > ね。RDはそういうものだと決めつけてもよいでしょうか? あいあい、俺はそういう認識です。 気楽に書けるからこそ嬉しいのです。 > # 私にはもうちょっとだけruby用に高級なものにしたかったという欲があり > # ますが。 実は俺もその欲があります。 なんてったって Ruby Document であるから←しつこい こういうものもひっくるめて HTML への wrapper とみなせれば嬉しいです。 やはり問題はRDの書き方についてのドキュメントか・・・ るびきち☆ http://i.am/rubikitch