[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:55

From: SASADA Koichi <ko1@a...>
Date: Wed, 13 Sep 2006 17:31:26 +0900
Subject: [ruby-reference-manual:55] Re: 作業マニュアル #1 (フォーマット変換)

 ささだです。

 仕様のたたき台が出たらその後で議論、と思っていたんですが、もう決定にな
るんでしょうか。日記での仕様検討はあんまり読んでません。ML で議論する前
のたたき台作りだとばかり思っていたから。


 気になっていたのが、

・ドキュメントの構造
 http://www.typemiss.net/blog/kounoike/20060120-54
 この辺で出ている話。

・ライブラリに複数のクラス、モジュールがある場合は全部きちんと分ける?

・目次の作り方
 今は全部手作業ですが、自動化できるか?

・パラメータ(引数)、返り値の型はどう表現する?


の点です。


Minero Aoki wrote:
> 青木です。
> 
> 遅くなってすみません。
> 新リファレンスマニュアルの作業概要を書きます。
> 
> 作業はファイルフォーマットの変換から始めます。
> 組み込みライブラリ → 標準添付ライブラリの順番でやりましょう。
> 
> 変換作業では、ファイルごとに担当を決めて進めます。レポジトリに
> refm/api/ASSIGN というファイルが作ってあります。この表の該当
> エントリに自分の SVN アカウント名を書いて、コミットした時点で
> ファイルの担当が決まったものとします。忙しくて作業ができなくなっ
> た場合は、また ASSIGN ファイルを書き換えてコミットしてもらえ
> れば結構です。
> 
> 現在、フォーマット変換が済んでいないファイル (ほぼすべて) には
> *.off という拡張子がついてます。変換が終わったら svn mv で
> 「.off」のない名前に移動することで作業が完了したことを示します。
> 例えば _builtin/Dir.rd.off の変換が済んだら _builtin/Dir.rd
> に移動します。
> 
> で、肝心のフォーマットですが、まず実例を見てもらうのがよいと思
> います。例として _builtin/String.rd を変換してあるので、これ
> を真似しながらやってください。参考のため、マニュアルも最後に
> 付けておきます。また、レポジトリの refm/api/FORMAT にも同じ
> ものが入ってます。
> 
> また、ツール (bitclust) の bin/bc-convert.rb を使うと、簡単
> な変換はすべて済ませられます。一度これを使って変換したあと、ざっ
> と見て残りを手でいじるとよいでしょう。
> 
>   実行例
>   % ruby -I./lib bin/bc-convert.rb String.rd.off > tmp
>   % diff String.rd.off tmp
> 
> それ以外に、手で変換が必要になりそうなのは以下のところです。
> 
>   * 「= class String」などのレベル 1 ヘッダを新しい形式に変える
>   * 「== Singleton Methods」「== Instance Methods」
>     などのレベル 2 ヘッダを新しい形式に変える
>   * 「メソッド一覧」は自動生成するので、すべて消す。
>   * include と require を新しい文法に沿って書く
>   * テキストがインデントしてたら全部下げる。
>   * メソッドのシグネチャは Ruby の def と同じにする。
>   * ハイパーリンクは文法がまだ決まってないのでいじらなくてよいです。
>   * ((<ruby 1.x.x feature>)) はプリプロセッサの #@if に変換
>   * 注釈 ((- ... -)) は消すか、プリプロセッサコメント #@# に変換
> 
> 一通り変換が済んだら bitclust の bin/bc-list.rb でパースの
> テストをしてみてください。
> 
>   実行例
>   % ruby -I./lib bin/bc-list.rb String.rd.off
>   #<BitClust::LibraryDescription:0x00002a96076618
>    @classes=[#<class String>],
>    @methods=
>     [#<smethod String.new>,
>      #<imethod String#+>,
>      #<imethod String#*>,
>      #<imethod String#%>,
>      #<imethod String#==,>,>,<,<=>,
>      #<imethod String#<<,concat>,
>      #<imethod String#=~>,
> 
> これでちゃんと全部のエントリが表示されていれば OK です。
> String.rd.off を String.rd に svn mv して作業を終えます。
> どうせあとでまたちゃんとチェックするので、いまのところはだい
> たい通っていればよいことにします。とにかく全部を変換するのが
> 先決です。
> 
> 手順のまとめ
> 
>   1. 変換するファイルを決める (仮に _builtin/Hash とする)。
>   2. refm/api/ASSIGN の _builtin/Hash の行に
>      自分のアカウント名を書いてコミットする。
>   3. bitclust の bin/bc-convert.rb で変換してみる。
>   4. diff をとったりして変な変換をしていないか確認する。
>   5. エディタでざっと見て残りを潰す。
>      変な文章が目についたらついでに直してもよい。
>   6. bitclust の bin/bc-list.rb にかけてチェックする。
>   7. 大丈夫そうならコミット。
>   8. Hash.rd.off を Hash.rd に svn mv して再度コミットする。
> 
> 
> わからないことがあったらこの ML で聞いてください。ツールが
> バグってる場合や、新しい機能が欲しいときも ML で聞いてください。
> 
> あと、コミットメールを早急に用意します。
> 
> --
> 青木峰郎
> 
> 
> 
> = リファレンスマニュアル記述フォーマット
> 
> ファイルのフォーマットは RD ベースです。
> ただし、厳密にパースできるように制限を増やしてあります。
> 
> == ファイルの構造
> 
> 新リファレンスではライブラリごとにファイルを分割します。
> 各ファイル (== ライブラリの記述) は以下のような構造をしています。
> 
>     require ライブラリ名
>     require ライブラリ名
>          :
>          :
> 
>     <ライブラリのドキュメント>
> 
>     <レベル1ブロック>
>     <レベル1ブロック>
>          :
>          :
> 
> ファイル冒頭では、そのライブラリが require しているライブラリ
> を「require ライブラリ名」記述します。require はいくつ書いても
> 構いません。
> 
> 続いてライブラリ自体のドキュメントを書きます。これは省略可能です。
> 
> 最後に、以下に述べる「レベル 1 ブロック」を任意の回数記述します。
> 「レベル 1 ブロック」はクラスやモジュールの記述です。
> 
> 
> == レベル 1 ブロック
> 
> レベル 1 ブロックはクラスやモジュールを記述します。
> レベル 1 ブロックは以下のような構造をしています。
> 
>     = class クラス名 < スーパークラス名
> 
>     include モジュール名
>     include モジュール名
>          :
>          :
> 
>     <クラスのドキュメント>
> 
>     <レベル2ブロック>
>     <レベル2ブロック>
>          :
>          :
> 
> レベル 1 ヘッダ (「=」) には以下の種類があります。
> 
>   * class       クラス
>   * module      モジュール
>   * object      オブジェクト (ほぼ ARGF と ENV 専用)
>   * reopen      既存クラスへのメソッドの追加
>   * redefine    既存メソッドの再定義 (jcode, mathn など)
> 
> ヘッダの直後には、そのクラスやモジュールが include している
> モジュールを「include モジュール名」で記述します。include は
> いくつ書いても構いません。
> 
> 続いてクラス自身のドキュメントを書きます。省略可能です。
> 
> 最後に「レベル 2 ブロック」を任意の回数だけ書きます。
> 「レベル 2 ブロック」はメソッドのグループです。
> 
> 
> == レベル 2 ブロック
> 
> レベル 2 ブロックは特定の種類のメソッドのグループを表現します。
> レベル 2 ブロックは以下のような構造をしています。
> 
>     == Singleton Methods
>     <メソッドエントリ>
>     <メソッドエントリ>
>           :
>           :
> 
> レベル 2 ヘッダ (「==」) には以下の種類があります。
> 
>   * Singleton Methods
>   * Private Singleton Methods
>   * Instance Methods
>   * Private Instance Methods
>   * Module Functions
>   * Constants
>   * Special Variables
> 
> 
> == メソッドエントリの文法
> 
> メソッドエントリは以下のような構造です。
> 
>     ---- メソッド名
>     ---- メソッド名(引数)
>     ---- メソッド名(引数) { .... }
> 
>     <メソッドのドキュメント>
> 
> 引数の形式がいくつもある場合や、alias があるときは、上記の
> ように「--- メソッド名」の行を連続して書いてください。
> 
> メソッドシグネチャは Ruby での def と同じように記述します。
> 旧リファレンスマニュアルでは「self + other」や
> 「self[key] = value」のような書きかたも許容されていましたが、
> 新マニュアルでは認められません。
> 
> 
> == 通常のテキストの文法
> 
> ライブラリのドキュメント、クラスのドキュメント、メソッドの
> ドキュメントでは以下に述べる共通の文法を使います。
> 
> === 段落
> 
> 通常の段落はインデントなしで書きます。
> 
> === リスト
> 
> インデントするとリストになります。
> 
> [例]
> 
>    テキスト〜
> 
>        p Object.new
>        p [1, 2, 3]
> 
> 特殊な事情があってインデントが使えない場合は
> 以下の記法を使ってください。
> 
>     //emlist{
>     リスト
>     //}
> 
>     ※ 「//emlist{」と「//}」はインデントしない
> 
> === 箇条書き
> 
> 箇条書きはインデント + '*' です。インデントなしは不可。
> 
> [例]
> 
>    テキスト〜
> 
>      * 項目 1
>      * 項目 2
>      * 項目 3
> 
> === 番号付きの箇条書き
> 
> 番号付きの箇条書きはインデント + (1), (2), ... です。
> インデントなしは不可。
> 
> [例]
> 
>    テキスト〜
> 
>      (1) 項目 1
>      (2) 項目 2
>      (3) 項目 3
> 
> === ハイパーリンク
> 
> 以下のようなハイパーリンク記法が使えます。
> 
>   * [[c:String]]       クラス String にリンク
>   * [[m:String.new]]   メソッド String.new にリンク
>   * [[m:String#dump]]  メソッド String#dump にリンク
>   * [[m:String#[] ]]   メソッド String#[] にリンク
>   * [[m:$~]]           特殊変数 $~ にリンク
>   * [[lib:jcode]]      ライブラリ jcode にリンク
>   * [[man:tr(1)]]      man ページ tr(1) にリンク
>   * [[url:http://i.loveruby.net]]  URL http://i.loveruby.net にリンク
> 
> === 削除された項目
> 
> RD の (({...})), ((|...|)) はサポートしません。
> bc-convert.rb を使うと自動的にすべて削除されます。
> 
> 脚注とコメントも廃止されました。コメントを書きたい場合は
> プリプロセッサコメント「#@# ...」を使ってください。
> 
> 
> == プリプロセッサ
> 
> 各ファイルは事前に専用プリプロセッサで処理されます。プリプロセッサ
> の命令はすべて行単位で、すべて「#@」で始まります。
> 
> === #@#
> 
> 「#@#」の行はコメントです。
> 
> === #@include
> 
> 「#@include(ファイル名)」で他のファイルをテキスト的に結合できます。
> 「ファイル名」は #@include の書かれているファイルからの相対パスを
> 探します。
> 
> [例]
> 
>   #@include(HTTP)
>   #@include(HTTPHeader)
>   #@include(HTTPRequest)
>   #@include(HTTPResponse)
> 
> === #@if
> 
> 「#@if(条件) 〜 #@else 〜 #@end 」でバージョン依存コンパイルが
> できます。例えば Ruby 1.8.0 以降にのみ適用される文章は以下
> のように記述します。
> 
> [例]
> 
>   #@if (version >= "1.8.0")
>   Ruby 1.8 以降では 〜〜
>   #@end
> 
> いまのところ条件式の評価はテキトーなので、比較式 (>= とか == とか)
> しか使えません。他の式が使いたいときは ML で相談してください。
> 
> --
> ML: ruby-reference-manual@m...
> 使い方: http://QuickML.com/


-- 
// SASADA Koichi at atdot dot net


--
ML: ruby-reference-manual@m...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

        53 2006-09-12 20:50 [aamine@l...         ] 作業マニュアル #1 (フォーマット変換)    
        54 2006-09-13 10:13 ┣[kazuhiko@f...       ]                                       
        56 2006-09-13 10:35 ┃┗[aamine@l...         ]                                     
->      55 2006-09-13 10:31 ┣[ko1@a...            ]                                       
        57 2006-09-13 10:59 ┃┗[aamine@l...         ]                                     
        73 2006-09-15 01:21 ┃ ┗[ko1@a...            ]                                   
        77 2006-09-15 18:01 ┃  ┗[aamine@l...         ]                                 
        58 2006-09-13 15:50 ┣[aamine@l...         ]                                       
        59 2006-09-13 16:19 ┣[itacchi@g...        ]                                       
        60 2006-09-13 16:56 ┃┗[aamine@l...         ]                                     
        61 2006-09-13 17:53 ┃ ┗[itacchi@g...        ]                                   
        62 2006-09-13 18:02 ┃  ┗[aamine@l...         ]                                 
        63 2006-09-14 10:36 ┣[sheepman@s...       ] ネストしたクラスと定数へのリンクの記法
        64 2006-09-14 11:21 ┃┗[aamine@l...         ]                                     
        66 2006-09-14 16:53 ┣[zn@m...             ]                                       
        69 2006-09-14 19:25 ┃┗[aamine@l...         ]                                     
        74 2006-09-15 14:35 ┃ ┗[zn@m...             ]                                   
        76 2006-09-15 17:59 ┃  ┗[aamine@l...         ]                                 
        67 2006-09-14 17:30 ┣[itacchi@g...        ]                                       
        78 2006-09-16 04:11 ┣[sheepman@s...       ] レベル 2 ブロック付きのドキュメント   
        79 2006-09-16 06:32 ┃┗[aamine@l...         ]                                     
        81 2006-09-16 10:06 ┃ ┗[sheepman@s...       ]                                   
        82 2006-09-16 16:25 ┃  ┗[aamine@l...         ]                                 
        80 2006-09-16 10:00 ┣[sheepman@s...       ] メソッドで使う定数の場所              
        83 2006-09-16 16:10 ┃┗[aamine@l...         ]                                     
        89 2006-09-17 13:48 ┗[sheepman@s...       ] レベル 2 ヘッダ                       
        90 2006-09-17 14:19  ┗[aamine@l...         ]