Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > rdoc/markupライブラリ > RDoc::Markupクラス

class RDoc::Markup

クラスの継承リスト: RDoc::Markup < Object < Kernel < BasicObject

要約

RDoc 形式のドキュメントを目的の形式に変換するためのクラスです。

例:

require 'rdoc/markup/to_html'

h = RDoc::Markup::ToHtml.new
puts h.convert(input_string)

独自のフォーマットを行うようにパーサを拡張する事もできます。

[注意] 1.9.3 以前の 1.9 系の rdoc では RDoc::Markup::Formatter に バグがあるため、下記の例のような拡張が行えません。1.9.3 以下でこのよう な拡張を行いたい場合は rdoc 3.7 以降を RubyGems でインストールしてくだ さい。

例:

require 'rdoc/markup'
require 'rdoc/markup/to_html'

class WikiHtml < RDoc::Markup::ToHtml
  # WikiWord のフォントを赤く表示。
  def handle_special_WIKIWORD(special)
    "<font color=red>" + special.text + "</font>"
  end
end

m = RDoc::Markup.new
# { 〜 } までを :STRIKE でフォーマットする。
m.add_word_pair("{", "}", :STRIKE)
# <no> 〜 </no> までを :STRIKE でフォーマットする。
m.add_html("no", :STRIKE)

# WikiWord を追加。
m.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)

wh = WikiHtml.new(m)
# :STRIKE のフォーマットを <strike> 〜 </strike> に指定。
wh.add_tag(:STRIKE, "<strike>", "</strike>")

puts "<body>#{wh.convert ARGF.read}</body>"

変換する形式を変更する場合、フォーマッタ(例. RDoc::Markup::ToHtml) を変更、拡張する必要があります。

目次

特異メソッド
new
インスタンスメソッド
add_html add_special add_word_pair content convert get_line_types
定数
LABEL_LIST_RE SIMPLE_LIST_RE SPACE

特異メソッド

new -> RDoc::Markup[permalink][rdoc]

自身を初期化します。

インスタンスメソッド

add_html(tag, name) -> ()[permalink][rdoc]

tag で指定したタグをフォーマットの対象にします。

[PARAM] tag:
追加するタグ名を文字列で指定します。大文字、小文字のど ちらを指定しても同一のものとして扱われます。
[PARAM] name:
SM::ToHtml などのフォーマッタに識別させる時の名前を Symbol で指定します。

例:

require 'rdoc/markup/simple_markup'
require 'rdoc/markup/simple_markup/to_html'
m = SM::SimpleMarkup.new
m.add_html("no", :STRIKE)

h = SM::ToHtml.new
h.add_tag(:STRIKE, "<strike>", "</strike>")
puts m.convert(input_string, h)

変換時に実際にフォーマットを行うには SM::ToHtml#add_tag のように、 フォーマッタ側でも操作を行う必要があります。

add_special(pattern, name) -> ()[permalink][rdoc]

pattern で指定した正規表現にマッチする文字列をフォーマットの対象にしま す。

例えば WikiWord のような、SM::SimpleMarkup#add_word_pairSM::SimpleMarkup#add_html でフォーマットできないものに対して使用 します。

[PARAM] pattern:
正規表現を指定します。
[PARAM] name:
SM::ToHtml などのフォーマッタに識別させる時の名前を Symbol で指定します。

例:

require 'rdoc/markup/simple_markup'
require 'rdoc/markup/simple_markup/to_html'

class WikiHtml < SM::ToHtml
  def handle_special_WIKIWORD(special)
    "<font color=red>" + special.text + "</font>"
  end
end

m = SM::SimpleMarkup.new
m.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)

h = WikiHtml.new
puts m.convert(input_string, h)

変換時に実際にフォーマットを行うには SM::ToHtml#accept_special_<name で指定した名前> のように、フォーマッタ側でも操作を行う必要があります。

add_word_pair(start, stop, name) -> ()[permalink][rdoc]

start と stop ではさまれる文字列(例. *bold*)をフォーマットの対象にしま す。

[PARAM] start:
開始となる文字列を指定します。
[PARAM] stop:
終了となる文字列を指定します。start と同じ文字列にする事も 可能です。
[PARAM] name:
SM::ToHtml などのフォーマッタに識別させる時の名前を Symbol で指定します。
[EXCEPTION] RuntimeError:
start に "<" で始まる文字列を指定した場合に発生します。

例:

require 'rdoc/markup/simple_markup'
require 'rdoc/markup/simple_markup/to_html'
m = SM::SimpleMarkup.new
m.add_word_pair("{", "}", :STRIKE)

h = SM::ToHtml.new
h.add_tag(:STRIKE, "<strike>", "</strike>")
puts m.convert(input_string, h)

変換時に実際にフォーマットを行うには SM::ToHtml#add_tag のように、 フォーマッタ側でも操作を行う必要があります。

content -> String[permalink][rdoc]

変換する文字列を返します。

rdoc ライブラリのデバッグ用途に使用します。 SM::SimpleMarkup#convert の後に実行します。

変換のために加工したオブジェクトを改行で連結したものを返すため、変換前 の文字列と結果が異なる事があります。

[SEE_ALSO] SM::SimpleMarkup#convert

convert(str, formatter) -> object | ""[permalink][rdoc]

str で指定された文字列を formatter に変換させます。

[PARAM] str:
変換する文字列を指定します。
[PARAM] formatter:
SM::ToHtmlSM::ToLaTeX などのインスタンス を指定します。

変換結果は formatter によって文字列や配列を返します。

get_line_types -> [Symbol][permalink][rdoc]

変換する文字列の各行のタイプを Symbol の配列で返します。

rdoc ライブラリのデバッグ用途に使用します。 SM::SimpleMarkup#convert の後に実行します。

[SEE_ALSO] SM::SimpleMarkup#convert

定数

LABEL_LIST_RE -> Regexp[permalink][rdoc]

ラベル付きリストにマッチする正規表現です。ライブラリの内部で使用します。

SIMPLE_LIST_RE -> Regexp[permalink][rdoc]

リストにマッチする正規表現です。ライブラリの内部で使用します。

ラベルの有無を問わずマッチします。

SPACE -> ?\s[permalink][rdoc]

空白文字です。?\s を返します。ライブラリの内部で使用します。