class JsDuck::BatchProcessor

Processes the parsing results into Relations object.

Public Instance Methods

process(parsed_files, opts) click to toggle source

Processes array of Source::File objects from BatchParser and returns instance of Relations class.

# File lib/jsduck/batch_processor.rb, line 29
def process(parsed_files, opts)
  r = aggregate(parsed_files)
  r = pre_process(r, opts)
  r = to_class_objects(r, opts)
  return post_process(r, opts)
end

Private Instance Methods

aggregate(parsed_files) click to toggle source

Aggregates parsing results sequencially

# File lib/jsduck/batch_processor.rb, line 39
def aggregate(parsed_files)
  agr = Aggregator.new
  parsed_files.each do |file|
    Logger.log("Aggregating", file.filename)
    agr.aggregate(file)
  end
  agr.result
end
post_process(relations, opts) click to toggle source

Do all kinds of post-processing on Relations object.

# File lib/jsduck/batch_processor.rb, line 69
def post_process(relations, opts)
  Process::CircularDeps.new(relations).process_all!
  Process::InheritDoc.new(relations).process_all!
  Process::Versions.new(relations, opts).process_all!
  Process::ReturnValues.new(relations).process_all!
  Process::Fires.new(relations).process_all!
  Process::Components.new(relations).process_all!
  Process::Lint.new(relations).process_all!
  Process::NoDoc.new(relations).process_all!
  relations
end
pre_process(classes_hash, opts) click to toggle source

Do all kinds of processing on the classes hash before turning it into Relations object.

# File lib/jsduck/batch_processor.rb, line 50
def pre_process(classes_hash, opts)
  Process::IgnoredClasses.new(classes_hash).process_all!
  Process::GlobalMembers.new(classes_hash, opts).process_all!
  Process::Accessors.new(classes_hash).process_all!
  Process::Ext4Events.new(classes_hash, opts).process_all!
  Process::Enums.new(classes_hash).process_all!
  Process::Overrides.new(classes_hash, opts).process_all!

  classes_hash.values
end
to_class_objects(docs, opts) click to toggle source

Turns all aggregated data into Class objects and places the classes inside Relations container.

# File lib/jsduck/batch_processor.rb, line 63
def to_class_objects(docs, opts)
  classes = docs.map {|d| Class.new(d) }
  Relations.new(classes, opts.external)
end