Sha256: 6855d9235105e60a91e25d2ad0c54e50f0f74345a68345d5b59f70ea0f024375

Contents?: true

Size: 1.53 KB

Versions: 3

Compression:

Stored size: 1.53 KB

Contents

require 'corundum/documentation-task'
require 'mattock/template-host'

module Corundum
  class DocumentationAssembly < DocumentationTask
    include Mattock::TemplateHost

    title 'Assembled Documentation'

    setting :sub_dir, "assembled"
    setting :documenters, []
    setting :extra_data, {}

    def default_configuration(toolkit, *documenters)
      super(toolkit)
      self.documenters = documenters
      self.valise = Corundum::configuration_store.valise
    end

    def resolve_configuration
      super
      self.documenters = documenters.each_with_object({}) do |doccer, hash|
        hash[File::join(target_dir, doccer.sub_dir)] = doccer
      end
    end


    def define
      in_namespace do
        subdir_regex = %r{^#{File::expand_path(target_dir)}}

        documenters.each_pair do |subdir, doccer|
          file subdir => [target_dir, doccer.entry_point] do
            if subdir_regex =~ File::expand_path(doccer.target_dir)
              fail "Documentation being rendered to #{doccer.target_dir}, inside of #{target_dir}"
            end

            FileUtils.rm_rf(subdir)
            FileUtils.mv(doccer.target_dir, subdir)
          end
        end

        #Colision of doc groups
        task :collect => documenters.keys

        desc "Generate various documentation and collect it in one place"
        file entry_point => [target_dir, :collect] do
          File::open(entry_point, "w") do |file|
            file.write(render("doc_assembly/index.html.erb"))
          end
        end
      end
      super
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
corundum-0.0.15 lib/corundum/documentation/assembly.rb
corundum-0.0.13 lib/corundum/documentation/assembly.rb
corundum-0.0.12 lib/corundum/documentation/assembly.rb