搜索RDoc documentation后,我无法找到如何在RDoc中记录文件/顶级方法...
假设我有以下代码:
sizeof
使用此代码运行RDoc将仅为类Foo生成文档,其中我希望有文件foo.rb和顶级方法foo_method()的文档。
所以我的问题是:如何制作RDoc文档文件和顶级方法?
答案 0 :(得分:0)
仍然无法找到如何做到这一点。
作为一种解决方法,我制作了一个Ruby脚本,读取我的其他Ruby文件(包含文档),解析它,并创建一些模拟模块,我插入解析的文档。
如果有人对以下内容感兴趣,可以使用以下脚本:
#:stopdoc:
FILES = ['features/step_definitions/*.rb', 'features/support/*.rb', 'lib/ffi/*.rb', 'lib/*.rb']
FILE_NAME = 'docs/files.rb'
TOP_LEVEL_NAME = 'docs/top_level.rb'
def gen_files(content)
match = content.scan(/(##[^`]+File::[ ]*([\w]+)[^`]+?##)/)
File.open(FILE_NAME, 'a') do |f|
f << "\n"
f << match[0][0]
f << "\n"
f << "module #{match[0][1].capitalize}\n\nend\n"
end
end
def gen_top_level(content)
match = content.scan(/(##[\t ]*[\r]*\n(#[^\r\n]*[\r\n\t ]*)*##[\t ]*[\r]*\n){1}([^\r\n]+)/)
File.open(TOP_LEVEL_NAME, 'a') do |f|
match[1 .. -1].each do |m| # Skip the file description
f << "\n"
next if (m[2].include?('module') || m[2].include?('class'))
f << m[0]
name = nil
unless m[2].scan(/def [^`]+/).empty?
name = m[2]
name = "#{name}\n\nend"
end
name = m[2] unless m[2].scan(/[A-Z_]+[ ]?=[ ]?[^`]+/).empty?
if name.nil?
name = m[2].gsub(/do([^`]*)/, '').gsub(/[^\d|\w]/, '_').gsub(/_+/, '_').gsub(/_$/, '')
name = "def #{name}\n\nend"
end
f << name
f << "\n"
end
end
end
File.write(FILE_NAME, "module Files #:nodoc:\n\n\n")
File.write(TOP_LEVEL_NAME, "module TopLevel\n\n\n")
FILES.each do |file_regex|
Dir.glob(file_regex).each do |rb_f|
gen_files(File.read(rb_f))
gen_top_level(File.read(rb_f))
end
end
File.open(FILE_NAME, 'a') do |f|
f << "\n\n\nend"
end
File.open(TOP_LEVEL_NAME, 'a') do |f|
f << "\n\n\nend"
end
#:startdoc:
在这个脚本中,我生成了2个文件:一个包含Files文档,一个包含顶级文档。对于顶级文档,此脚本处理常量,方法定义和Cucumber步骤(Gherkin)。
我仍然有点惊讶的是,像RDoc这样的工具无法指定一个选项或其他东西来解析顶级函数的文档。
我不接受我的回答,因为这只是一个不干净的解决方法