要約
RDoc 形式のドキュメントを目的の形式に変換するためのクラスです。
例:
require 'rdoc'
require 'rdoc/markup/to_html'
h = RDoc::Markup::ToHtml.new(RDoc::Options.new)
p h.convert("*bold*")
# => "\n<p><strong>bold</strong></p>\n"
独自のフォーマットを行うようにパーサを拡張する事もできます。
例require 'rdoc'
require 'rdoc/markup/to_html'
class WikiHtml < RDoc::Markup::ToHtml
# WikiWord のフォントを赤く表示。
def handle_regexp_WIKIWORD(target)
"<font color=red>" + target.text + "</font>"
end
end
m = RDoc::Markup.new
# { 〜 } までを :MARK でフォーマットする。
m.add_word_pair("{", "}", :MARK)
# <no> 〜 </no> までを :MARK でフォーマットする。
m.add_html("no", :MARK)
# WikiWord を追加。
m.add_regexp_handling(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
wh = WikiHtml.new(RDoc::Options.new, m)
# :MARK のフォーマットを <mark> 〜 </mark> に指定。
wh.add_tag(:MARK, "<mark>", "</mark>")
p wh.convert("WikiWord {del} <no>x</no>")
# => "\n<p><font color=red>WikiWord</font> <mark>del</mark> <mark>x</mark></p>\n"
変換する形式を変更する場合、フォーマッタ(例. RDoc::Markup::ToHtml) を変更、拡張する必要があります。
目次
- 特異メソッド
- インスタンスメソッド
- 定数
特異メソッド
new(attribute_manager = nil) -> RDoc::MarkupRuby 1.9.3 から[permalink][rdoc][edit]-
自身を初期化します。
- [PARAM]
attribute_manager: -
RDoc::Markup::AttributeManagerオブジェクトを指定します。
- [PARAM]
インスタンスメソッド
add_html(tag, name) -> ()Ruby 1.9.3 から Ruby 4.1 で削除[permalink][rdoc][edit]-
tag で指定したタグをフォーマットの対象にします。
- [PARAM]
tag: - 追加するタグ名を文字列で指定します。大文字、小文字のどちらを指定しても同一のものとして扱われます。
- [PARAM]
name: - RDoc::Markup::ToHtml などのフォーマッタに識別させる時の名前を Symbol で指定します。
require 'rdoc' require 'rdoc/markup/to_html' m = RDoc::Markup.new m.add_html("no", :MARK) h = RDoc::Markup::ToHtml.new(RDoc::Options.new, m) h.add_tag(:MARK, "<mark>", "</mark>") p h.convert("a <no>b</no> c") # => "\n<p>a <mark>b</mark> c</p>\n"変換時に実際にフォーマットを行うには RDoc::Markup::Formatter#add_tag のように、フォーマッタ側でも操作を行う必要があります。
- [PARAM]
add_regexp_handling(pattern, name) -> ()Ruby 3.0 から[permalink][rdoc][edit]-
pattern で指定した正規表現にマッチする文字列をフォーマットの対象にします。
例えば WikiWord のような、RDoc::Markup#add_word_pair、 RDoc::Markup#add_html でフォーマットできないものに対して使用します。
- [PARAM]
pattern: - 正規表現を指定します。
- [PARAM]
name: - RDoc::Markup::ToHtml などのフォーマッタに識別させる時の名前を Symbol で指定します。
require 'rdoc' require 'rdoc/markup/to_html' class WikiHtml < RDoc::Markup::ToHtml def handle_regexp_WIKIWORD(target) "<font color=red>" + target.text + "</font>" end end m = RDoc::Markup.new m.add_regexp_handling(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD) h = WikiHtml.new(RDoc::Options.new, m) p h.convert("see WikiWord here") # => "\n<p>see <font color=red>WikiWord</font> here</p>\n"変換時に実際にフォーマットを行うには、フォーマッタ側で
handle_regexp_<name で指定した名前>(target)を定義します。targetはRDoc::Markup::RegexpHandlingオブジェクトで、target.textでマッチした文字列(正規表現にグループがある場合は最初のグループ)を取得できます。また、フォーマッタの生成時に、この RDoc::Markup オブジェクトを渡す必要があります。 - [PARAM]
add_word_pair(start, stop, name) -> ()Ruby 1.9.3 から Ruby 4.1 で削除[permalink][rdoc][edit]-
start と stop ではさまれる文字列(例. *bold*)をフォーマットの対象にします。
- [PARAM]
start: - 開始となる文字列を指定します。
- [PARAM]
stop: - 終了となる文字列を指定します。start と同じ文字列にする事も可能です。
- [PARAM]
name: - RDoc::Markup::ToHtml などのフォーマッタに識別させる時の名前を Symbol で指定します。
- [EXCEPTION]
ArgumentError: - start に "<" で始まる文字列を指定した場合に発生します。
require 'rdoc' require 'rdoc/markup/to_html' m = RDoc::Markup.new m.add_word_pair("{", "}", :MARK) h = RDoc::Markup::ToHtml.new(RDoc::Options.new, m) h.add_tag(:MARK, "<mark>", "</mark>") p h.convert("a {b} c") # => "\n<p>a <mark>b</mark> c</p>\n"変換時に実際にフォーマットを行うには RDoc::Markup::Formatter#add_tag のように、フォーマッタ側でも操作を行う必要があります。
- [PARAM]
attribute_manager -> RDoc::Markup::AttributeManagerRuby 1.9.3 から Ruby 4.1 で削除[permalink][rdoc][edit]-
自身の
RDoc::Markup::AttributeManagerオブジェクトを返します。 convert(str, formatter) -> object | ""Ruby 1.9.3 から[permalink][rdoc][edit]-
str で指定された文字列を formatter に変換させます。
- [PARAM]
str: - 変換する文字列を指定します。
- [PARAM]
formatter: - RDoc::Markup::ToHtml、RDoc::Markup::ToRdoc などのインスタンスを指定します。
変換結果は formatter によって文字列や配列を返します。
- [PARAM]
定数
LABEL_LIST_RE -> RegexpRuby 1.9.3 から[permalink][rdoc][edit]-
ラベル付きリストにマッチする正規表現です。ライブラリの内部で使用します。
SIMPLE_LIST_RE -> RegexpRuby 1.9.3 から[permalink][rdoc][edit]-
リストにマッチする正規表現です。ライブラリの内部で使用します。
ラベルの有無を問わずマッチします。
SPACE -> ?\sRuby 1.9.3 から[permalink][rdoc][edit]-
空白文字です。?\s を返します。ライブラリの内部で使用します。