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

instance method RDoc::Markup#add_special

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 で指定した名前> のように、フォーマッタ側でも操作を行う必要があります。