Sha256: 7c10a594d52b7cbf11a15ea68357eadcf035ce7b35bd67a6bf44569b0ecdbe6d

Contents?: true

Size: 1.3 KB

Versions: 9

Compression:

Stored size: 1.3 KB

Contents

require 'jsduck/util/stdout'
require 'jsduck/exporter/full'
require 'jsduck/exporter/examples'
require 'jsduck/format/batch'
require 'jsduck/class_writer'
require 'jsduck/guide_writer'
require 'fileutils'

module JsDuck

  # Performs the export in one of the export formats.
  class ExportWriter
    def initialize(relations, assets, opts)
      @relations = relations
      @assets = assets
      @opts = opts
    end

    def write
      format_classes

      clean_output_dir unless @opts.output_dir == :stdout

      export_classes
      export_examples_in_guides if @opts.export == :examples

      Util::Stdout.flush if @opts.output_dir == :stdout
    end

    private

    def export_classes
      cw = ClassWriter.new(get_exporter, @relations, @opts)
      cw.write(@opts.output_dir, ".json")
    end

    def get_exporter
      exporters = {
        :full => Exporter::Full,
        :examples => Exporter::Examples,
      }
      exporters[@opts.export]
    end

    def export_examples_in_guides
      gw = GuideWriter.new(Exporter::Examples, @assets.guides, @opts)
      gw.write(@opts.output_dir, ".json")
    end

    # -- util routines --

    def clean_output_dir
      FileUtils.rm_rf(@opts.output_dir)
    end

    def format_classes
      Format::Batch.format_all!(@relations, @assets, @opts)
    end

  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
jsduck-5.2.0 lib/jsduck/export_writer.rb
jsduck-5.1.0 lib/jsduck/export_writer.rb
jsduck-5.0.1 lib/jsduck/export_writer.rb
jsduck-5.0.0 lib/jsduck/export_writer.rb
jsduck-5.0.0.beta5 lib/jsduck/export_writer.rb
jsduck-5.0.0.beta4 lib/jsduck/export_writer.rb
jsduck-5.0.0.beta3 lib/jsduck/export_writer.rb
jsduck-5.0.0.beta2 lib/jsduck/export_writer.rb
jsduck-5.0.0.beta01 lib/jsduck/export_writer.rb