Sha256: 0ce934f920d3df522973d906a7ccf09d8f946e24851c4771dc0ff33cb07dcd50
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
require "active_support/core_ext/string" class CliDocs::Markdown class Index def initialize(cli_class, cli_name, parent_command_name = nil) @cli_class = cli_class @cli_name = cli_name @parent_command_name = parent_command_name end def doc <<~EOL --- title: CLI Reference --- {% include reference.md %} #{command_list} EOL end def command_list pages = build_pages list = pages.map { |page| markdown_link(page) } list.join("\n") end def build_pages pages = [] commands = @cli_class.commands.reject { |command_name, command| command.hidden? } commands.keys.sort.each do |command_name| next if command_name == "help" page = Page.new( cli_class: @cli_class, cli_name: @cli_name, command_name: command_name, parent_command_name: @parent_command_name ) if subcommand?(command_name) subclass = subcommand_class(command_name) parent_name = subclass.to_s.demodulize.underscore index = Index.new(subclass, @cli_name, parent_name) sub_pages = index.build_pages links = sub_pages.map { |page| markdown_link(page) } pages += sub_pages else pages << page end end pages.sort_by { |page| page.full_command_name } end def subcommand_class(command_name) @cli_class.subcommand_classes[command_name] end def markdown_link(page) "* [#{page.full_command_name}]({% link #{page.path} %})" end def subcommand?(command_name) @cli_class.subcommands.include?(command_name) end def path "reference.md" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cli-docs-0.1.0 | lib/cli_docs/markdown/index.rb |