diff --git a/lib/jsduck/app.rb b/lib/jsduck/app.rb index c80c1771d3dcbde62234b0ab4fedae1c6462adc2..15599d9748e22459362cb24d25455f5fc877ebb1 100644 --- a/lib/jsduck/app.rb +++ b/lib/jsduck/app.rb @@ -47,7 +47,7 @@ module JsDuck result = aggregate(parsed_files) @relations = filter_classes(result) InheritDoc.new(@relations).resolve_all - Importer.import(@opts.imports, @relations) + Importer.import(@opts.imports, @relations, @parallel) Lint.new(@relations).run # Initialize guides, videos, examples, ... diff --git a/lib/jsduck/importer.rb b/lib/jsduck/importer.rb index 50079cec646d8f3842c179ba6423172127c692ca..410dc0b468e0a0fc5f1b3833eefaa58a066fe8ce 100644 --- a/lib/jsduck/importer.rb +++ b/lib/jsduck/importer.rb @@ -9,20 +9,20 @@ module JsDuck module_function # Loads in exported docs and generates @since and @new tags based on that data. - def import(imports, relations) + def import(imports, relations, parallel) if imports.length > 0 - generate_since_tags(read_all(imports), relations) + generate_since_tags(read_all(imports, parallel), relations) end end # Reads in data for all versions, returning array of # version/class-data pairs. We don't use a hash to preserve the # order of versions (from oldest to newest). - def read_all(imports) + def read_all(imports, parallel) imports.map do |ver| { :version => ver[:version], - :classes => ver[:path] ? read(ver) : current_version, + :classes => ver[:path] ? read(ver, parallel) : current_version, } end end @@ -32,14 +32,16 @@ module JsDuck end # Reads in data from all .json files in directory - def read(ver) - classes = {} - Dir[ver[:path] + "/*.json"].each do |filename| + def read(ver, parallel) + # Map list of files into pairs of (classname, members-hash) + pairs = parallel.map(Dir[ver[:path] + "/*.json"]) do |filename| JsDuck::Logger.instance.log("Importing #{ver[:version]}", filename) json = JsonDuck.read(filename) - classes[json["name"]] = members_id_index(json) + [json["name"], members_id_index(json)] end - classes + + # Turn key-value pairs array into hash + return Hash[ pairs ] end # creates index of all class members