class RDoc::Markup

RDoc::Markup 解析纯文本文件,并尝试将其分解为组成部分。 其中一些部分是高级别的:段落、逐字文本块、列表条目等。 其他部分发生在字符级别:一段粗体文本、代码字体中的单词。这种标记在精神上类似于 WikiWiki 网站上使用的标记,人们在其中使用一套简单的格式化规则来创建网页。

RDoc::Markup 和其他标记格式不进行输出格式化,这由 RDoc::Markup::Formatter 子类处理。

Markup 格式

RDoc 支持以下标记格式

您可以使用以下方法选择标记格式

每个项目

如果您使用 rake 构建文档,请使用 RDoc::Task#markup

如果您手动构建文档,请运行

rdoc --markup your_favorite_format --write-options

并提交 .rdoc_options 并将其与您打包的 gem 一起发布。

每个文件

在文件顶部使用 :markup: 指令为文件的其余部分设置默认格式。

每个注释

在您想要以不同格式编写的注释顶部使用 :markup: 指令。

RDoc::Markup

RDoc::Markup 在运行时是可扩展的:您可以添加新的标记元素,以便在 RDoc::Markup 解析的文档中识别它们。

RDoc::Markup 旨在成为一系列工具的基础,这些工具具有一个共同的要求,即应该以各种不同的输出格式和媒体呈现简单的纯文本。 可以预见,RDoc::Markup 可以作为格式化 RDoc 样式注释块、Wiki 条目和在线常见问题解答的基础。

概要

此代码将 input_string 转换为 HTML。 转换发生在 convert 方法中,因此您可以使用相同的 RDoc::Markup 转换器来转换多个输入字符串。

require 'rdoc'

h = RDoc::Markup::ToHtml.new(RDoc::Options.new)

puts h.convert(input_string)

您可以扩展 RDoc::Markup 解析器以识别新的标记序列,并添加正则表达式处理。 在这里,我们将 WikiWords 对解析器赋予意义,并使序列 {word} 和 <no>text…</no> 表示删除线文本。 然后,我们对 HTML 输出类进行子类化以处理这些

require 'rdoc'

class WikiHtml < RDoc::Markup::ToHtml
  def handle_regexp_WIKIWORD(target)
    "<font color=red>" + target.text + "</font>"
  end
end

markup = RDoc::Markup.new
markup.add_word_pair("{", "}", :STRIKE)
markup.add_html("no", :STRIKE)

markup.add_regexp_handling(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)

wh = WikiHtml.new RDoc::Options.new, markup
wh.add_tag(:STRIKE, "<strike>", "</strike>")

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

Encoding

Encoding 支持可用的情况下,RDoc 将自动将所有文档转换为相同的输出编码。 可以通过 RDoc::Options#encoding 设置输出编码,默认为 Encoding.default_external

RDoc Markup 参考

请参阅 RDoc::MarkupReference