class RDoc::Generator::Mdoc
An mdoc(7) generator for RDoc
.
This generator will create man pages in mdoc(7) format for classes, modules and methods parsed by RDoc
.
Attributes
mandb_section[R]
output_directory[R]
store[R]
Public Class Methods
new(store, options)
click to toggle source
Create an instance usign the provided RDoc::Store and RDoc::Options
.
# File lib/rdoc/generator/mdoc.rb, line 27 def initialize(store, options) @store = store @mandb_section = sanitize_mandb_section( options.mandb_section || "3-rdoc", ) @output_directory = File.expand_path(File.join(options.op_dir, "man#{mandb_section.split('-').first}")) FileUtils.mkdir_p output_directory end
setup_options(options)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 19 def self.setup_options(options) options.option_parser.on("--section SECTION", String) do |mandb_section| options.mandb_section = mandb_section end end
Public Instance Methods
generate()
click to toggle source
Generate man pages.
Every class, module and method gets their own man page in the “manSECTION_PREFIX” subdirectory of the output directory.
# File lib/rdoc/generator/mdoc.rb, line 41 def generate generate_class_and_module_pages generate_method_pages end
Private Instance Methods
binding_with_assigns(assigns)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 115 def binding_with_assigns(assigns) RenderContext.new(assigns).binding end
classes()
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 62 def classes @classes ||= decorate_displayed(store.all_classes, Class) end
decorate_displayed(objects, decoration_class)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 74 def decorate_displayed(objects, decoration_class) objects.select(&:display?).map do |object| decoration_class.new(object, mandb_section) end end
file_name(object)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 84 def file_name(object) File.join( output_directory, "#{sanitize_file_name(object.full_name)}.#{mandb_section}", ) end
generate_class_and_module_pages()
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 50 def generate_class_and_module_pages (classes + modules).each do |object| generate_page(file_name(object), "module", module: object) end end
generate_method_pages()
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 56 def generate_method_pages methods.each do |method| generate_page(file_name(method), "method", method: method) end end
generate_page(file_name, template_name, assigns)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 80 def generate_page(file_name, template_name, assigns) File.write(file_name, render_template(template(template_name), assigns)) end
methods()
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 70 def methods @methods ||= (classes + modules).flat_map(&:methods) end
modules()
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 66 def modules @modules ||= decorate_displayed(store.all_modules, Module) end
render_template(template, assigns)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 99 def render_template(template, assigns) ERB.new(template).result(binding_with_assigns(assigns)).squeeze("\n") end
sanitize_file_name(string)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 91 def sanitize_file_name(string) string.gsub("/", "\\") end
sanitize_mandb_section(string)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 95 def sanitize_mandb_section(string) string.gsub(".", "-") end
template(name)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 103 def template(name) @templates ||= {} @templates[name] ||= File.read(template_path(name)) end
template_path(name)
click to toggle source
# File lib/rdoc/generator/mdoc.rb, line 108 def template_path(name) File.expand_path( File.join("..", "..", "..", "..", "templates", "#{name}.mdoc.erb"), __FILE__, ) end