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

ruby-reference-manual:108

From: Minero Aoki <aamine@l...>
Date: Wed, 11 Oct 2006 23:52:24 +0900 (JST)
Subject: [ruby-reference-manual:108] 記述フォーマット (rev.2)

青木です。

クラスリファレンスの記述フォーマットに関するドキュメントを送ります。
同じものが Subversion レポジトリの refm/api/FORMAT に入れてある
ので、最新版が必要なときはそっちを見てください。

--
青木峰郎



= 記述フォーマット

ファイルのフォーマットは 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 は
いくつ書いても構いません。

続いてクラス自身のドキュメントを書きます。省略可能です。
クラスのドキュメントでヘッドラインを使いたいときは
レベル 3 (===) 以上にしてください。

最後に「レベル 2 ブロック」を任意の回数だけ書きます。
「レベル 2 ブロック」はメソッドのグループです。


== レベル 2 ブロック

レベル 2 ブロックは特定の種類のメソッドのグループを表現します。
レベル 2 ブロックは以下のような構造をしています。

    == Singleton Methods
    <メソッドエントリ>
    <メソッドエントリ>
          :
          :

レベル 2 ヘッダ (「==」) には以下の種類があります。

: Singleton Methods または Class Methods
    public な特異メソッド
: Private Singleton Methods
    private な特異メソッド   
: Protected Singleton Methods
    protected な特異メソッド
: Instance Methods
    public なインスタンスメソッド
: Private Instance Methods
    private なインスタンスメソッド
: Protected Instance Methods
    protected なインスタンスメソッド
: Module Functions
    モジュール関数
: Constants
     定数
: Special Variables
     特殊定数 (Kernel 限定)


== メソッドエントリの文法

メソッドエントリは以下のような構造です。

    ---- メソッド名
    ---- メソッド名(引数)
    ---- メソッド名(引数) { .... }

    <メソッドのドキュメント>

引数の形式がいくつもある場合や、alias があるときは、上記の
ように「--- メソッド名」の行を連続して書いてください。

メソッドシグネチャは Ruby での def と同じように記述します。
旧リファレンスマニュアルでは「self + other」や
「self[key] = value」のような書きかたも許容されていましたが、
新マニュアルでは認められません。

メソッドのドキュメント内でヘッドラインを使いたいときは
レベル 3 (===) 以上を使ってください。


== 通常のテキストの文法

ライブラリのドキュメント、クラスのドキュメント、メソッドの
ドキュメントでは以下に述べる共通の文法を使います。

=== 段落

通常の段落はインデントなしで書きます。

=== リスト

インデントするとリストになります。

[例]

   テキスト〜

       p Object.new

特殊な事情があってインデントが使えない場合は
以下の記法を使ってください。

    //emlist{
    リスト
    //}

    ※ 「//emlist{」と「//}」はインデントしない

=== 箇条書き

箇条書きはインデント + '*' です。インデントなしは不可。

[例]

   テキスト〜

     * 項目 1
     * 項目 2
     * 項目 3

=== 番号付きの箇条書き

番号付きの箇条書きはインデント + (1), (2), ... です。
インデントなしは不可。

[例]

   テキスト〜

     (1) 項目 1
     (2) 項目 2
     (3) 項目 3

=== ハイパーリンク

以下のようなハイパーリンク記法が使えます。

  * [[c:String]]          クラス String にリンク
  * [[c:File::Stat]]      クラス File::Stat にリンク
  * [[m:String.new]]      メソッド String.new にリンク
  * [[m:String#dump]]     メソッド String#dump にリンク
  * [[m:String#[] ]]      メソッド String#[] にリンク (空白必須)
  * [[m:File::SEPARATOR]] 定数 File::SEPARATOR にリンク
  * [[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)

=== #@since

「#@since バージョン 〜 #@end」でバージョン依存コンパイルができます。
例えば Ruby 1.8.0 以降にのみ適用される文章は以下のように記述します。

[例]

  #@since 1.8.0
  Ruby 1.8 以降では 〜〜
  #@end

#@since 命令は #@if 命令の特殊形です。

=== #@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/

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