Sha256: 68c7f2b02316b791644833f88c48a55b78da99d7e4b4948095201325dd1153e3

Contents?: true

Size: 1.2 KB

Versions: 7

Compression:

Stored size: 1.2 KB

Contents

require 'jsduck/batch_parser'
require 'jsduck/assets'
require 'jsduck/meta_tag_registry'
require 'jsduck/export_writer'
require 'jsduck/web_writer'
require 'jsduck/logger'

module JsDuck

  # The main application logic of jsduck
  class App
    # Initializes app with JsDuck::Options object
    def initialize(opts)
      @opts = opts
    end

    # Main App logic.
    # Returns application exit code.
    def run
      parse

      init_assets

      if @opts.export
        generate_export
      else
        generate_web_page
      end

      if @opts.warnings_exit_nonzero && Logger.warnings_logged?
        return 2
      else
        return 0
      end
    end

    private

    def parse
      @batch_parser = BatchParser.new(@opts)
      @relations = @batch_parser.run
    end

    def init_assets
      # Initialize guides, videos, examples, ...
      @assets = Assets.new(@relations, @opts)

      # Give access to assets from all meta-tags
      MetaTagRegistry.instance.assets = @assets
    end

    def generate_export
      ExportWriter.new(@relations, @assets, @opts).write
    end

    def generate_web_page
      WebWriter.new(@relations, @assets, @batch_parser.parsed_files, @opts).write
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
jsduck-4.10.4 lib/jsduck/app.rb
jsduck-4.10.3 lib/jsduck/app.rb
jsduck-4.10.2 lib/jsduck/app.rb
jsduck-4.10.1 lib/jsduck/app.rb
jsduck-4.10.0 lib/jsduck/app.rb
jsduck-4.9.0 lib/jsduck/app.rb
jsduck-4.8.0 lib/jsduck/app.rb