Sha256: 75625fa003c4289373df98e45c15296ab4e018cfd258919291ce0d589c949d39

Contents?: true

Size: 1.25 KB

Versions: 12

Compression:

Stored size: 1.25 KB

Contents

require 'jsduck/batch_parser'
require 'jsduck/batch_processor'
require 'jsduck/assets'
require 'jsduck/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
      @parsed_files = BatchParser.parse(@opts)
      @relations = BatchProcessor.process(@parsed_files, @opts)
    end

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

      # HACK: Give access to assets from @aside tag
      TagRegistry.get_by_name(:aside).assets = @assets
    end

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

    def generate_web_page
      Web::Writer.new(@relations, @assets, @parsed_files, @opts).write
    end

  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
jsduck-5.3.4 lib/jsduck/app.rb
jsduck-5.3.3 lib/jsduck/app.rb
jsduck-5.3.2 lib/jsduck/app.rb
jsduck-5.3.1 lib/jsduck/app.rb
jsduck-5.3.0 lib/jsduck/app.rb
jsduck-5.2.0 lib/jsduck/app.rb
jsduck-5.1.0 lib/jsduck/app.rb
jsduck-5.0.1 lib/jsduck/app.rb
jsduck-5.0.0 lib/jsduck/app.rb
jsduck-5.0.0.beta5 lib/jsduck/app.rb
jsduck-5.0.0.beta4 lib/jsduck/app.rb
jsduck-5.0.0.beta3 lib/jsduck/app.rb