Sha256: 44784246b759f21922c3c4f69081bad1ea8ef9277590b70b27a255212a6e299b

Contents?: true

Size: 1.7 KB

Versions: 6

Compression:

Stored size: 1.7 KB

Contents

require "active_support/core_ext/object"

module Lono::Markdown
  class Creator
    cattr_accessor :mute

    def self.create_all(command_class,  parent_command_name=nil)
      clean unless parent_command_name
      new(command_class, parent_command_name).create_all
    end

    def self.clean
      FileUtils.rm_rf("docs/_reference")
      FileUtils.rm_f("docs/reference.md")
    end

    # command_class is top-level CLI class.
    def initialize(command_class, parent_command_name)
      @command_class = command_class
      @parent_command_name = parent_command_name
    end

    def create_all
      create_index unless @parent_command_name

      @command_class.commands.keys.each do |command_name|
        page = Page.new(@command_class, command_name, @parent_command_name)
        create_page(page)

        if subcommand?(command_name)
          subcommand_class = subcommand_class(command_name)
          parent_command_name = command_name

          say "Creating subcommands pages for #{parent_command_name}..."
          Creator.create_all(subcommand_class, parent_command_name)
        end
      end
    end

    def create_page(page)
      say "Creating #{page.path}..."
      FileUtils.mkdir_p(File.dirname(page.path))
      IO.write(page.path, page.doc)
    end

    def create_index
      page = Index.new(@command_class)
      FileUtils.mkdir_p(File.dirname(page.path))
      say "Creating #{page.path}"
      IO.write(page.path, page.doc)
    end

    def subcommand?(command_name)
      @command_class.subcommands.include?(command_name)
    end

    def subcommand_class(command_name)
      @command_class.subcommand_classes[command_name]
    end

    def say(text)
      puts text unless self.class.mute
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
lono-4.0.6 lib/lono/markdown/creator.rb
lono-4.0.5 lib/lono/markdown/creator.rb
lono-4.0.4 lib/lono/markdown/creator.rb
lono-4.0.3 lib/lono/markdown/creator.rb
lono-4.0.2 lib/lono/markdown/creator.rb
lono-4.0.1 lib/lono/markdown/creator.rb