Loading lib/jsduck/api_exporter.rb +3 −10 Original line number Diff line number Diff line Loading @@ -24,16 +24,7 @@ module JsDuck # other exporters. end # Extension for filename def extension ".json" end # Writes full class data in JSON format to file def write(filename, cls) JsonDuck.write_json(filename, export(cls)) end # Returns hash of class name and member names def export(cls) { :name => cls[:name], Loading @@ -42,6 +33,8 @@ module JsDuck } end private def export_members(cls, context) h = {} Class.default_members_hash.each_key do |type| Loading lib/jsduck/app.rb +6 −19 Original line number Diff line number Diff line Loading @@ -55,25 +55,12 @@ module JsDuck @examples = Examples.create(@opts.examples) @categories = Categories.create(@opts.categories_path, DocFormatter.new(@relations, @opts), @relations) if @opts.export == :json if @opts.export format_classes if @opts.output_dir == :stdout puts JsonDuck.generate(@relations.classes) else FileUtils.rm_rf(@opts.output_dir) cw = ClassWriter.new(JsonExporter, @relations, @opts) cw.write(@opts.output_dir) end elsif @opts.export == :api format_classes if @opts.output_dir == :stdout exporter = ApiExporter.new({}, {}) puts JsonDuck.generate(@relations.classes.map {|cls| exporter.export(cls) }) else FileUtils.rm_rf(@opts.output_dir) cw = ClassWriter.new(ApiExporter, @relations, @opts) cw.write(@opts.output_dir) end FileUtils.rm_rf(@opts.output_dir) unless @opts.output_dir == :stdout exporters = {:json => JsonExporter, :api => ApiExporter} cw = ClassWriter.new(exporters[@opts.export], @relations, @opts) cw.write(@opts.output_dir, ".json") else FileUtils.rm_rf(@opts.output_dir) TemplateDir.new(@opts).write Loading @@ -97,7 +84,7 @@ module JsDuck format_classes cw = ClassWriter.new(JsonPExporter, @relations, @opts) cw.write(@opts.output_dir+"/output") cw.write(@opts.output_dir+"/output", ".js") @guides.write(@opts.output_dir+"/guides") @videos.write(@opts.output_dir+"/videos") Loading lib/jsduck/class_writer.rb +27 −5 Original line number Diff line number Diff line require 'jsduck/parallel_wrap' require 'jsduck/logger' require 'jsduck/json_duck' require 'fileutils' module JsDuck # Writes class data into files # Writes class data into files in JSON or JSONP format or to STDOUT. class ClassWriter def initialize(exporter_class, relations, opts) @relations = relations Loading @@ -12,13 +13,34 @@ module JsDuck @parallel = ParallelWrap.new(:in_processes => opts.processes) end # Writes class data into given directory def write(dir) # Writes class data into given directory or STDOUT when dir == :stdout. # # Extension is either ".json" for normal JSON output # or ".js" for JsonP output. def write(dir, extension) dir == :stdout ? write_stdout : write_dir(dir, extension) end private def write_stdout json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) } puts JsonDuck.generate(json) end def write_dir(dir, extension) FileUtils.mkdir(dir) @parallel.each(@relations.classes) do |cls| filename = dir + "/" + cls[:name] + @exporter.extension filename = dir + "/" + cls[:name] + extension Logger.instance.log("Writing docs", filename) @exporter.write(filename, cls) json = @exporter.export(cls) if extension == ".json" JsonDuck.write_json(filename, json) elsif extension == ".js" JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), json) else throw "Unexpected file extension: #{extension}" end end end Loading lib/jsduck/json_exporter.rb +3 −9 Original line number Diff line number Diff line require 'jsduck/exporter' require 'jsduck/json_duck' module JsDuck Loading @@ -9,14 +8,9 @@ module JsDuck @exporter = Exporter.new(relations) end # Extension for filename def extension ".json" end # Writes full class data in JSON format to file def write(filename, cls) JsonDuck.write_json(filename, @exporter.export(cls)) # Returns full class data hash def export @exporter.export(cls) end end Loading lib/jsduck/json_p_exporter.rb +3 −10 Original line number Diff line number Diff line require 'jsduck/exporter' require 'jsduck/json_duck' require 'jsduck/renderer' require 'jsduck/doc_formatter' Loading @@ -17,17 +16,11 @@ module JsDuck renderer.meta_tags = @opts.meta_tags end # Extension for filename def extension ".js" end # Writes compacted class data in JsonP format to file def write(filename, cls) # Returns compacted class data hash def export(cls) data = @exporter.export(cls) data[:html] = @renderer.render(data) data = @exporter.compact(data) JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), data) return @exporter.compact(data) end end Loading Loading
lib/jsduck/api_exporter.rb +3 −10 Original line number Diff line number Diff line Loading @@ -24,16 +24,7 @@ module JsDuck # other exporters. end # Extension for filename def extension ".json" end # Writes full class data in JSON format to file def write(filename, cls) JsonDuck.write_json(filename, export(cls)) end # Returns hash of class name and member names def export(cls) { :name => cls[:name], Loading @@ -42,6 +33,8 @@ module JsDuck } end private def export_members(cls, context) h = {} Class.default_members_hash.each_key do |type| Loading
lib/jsduck/app.rb +6 −19 Original line number Diff line number Diff line Loading @@ -55,25 +55,12 @@ module JsDuck @examples = Examples.create(@opts.examples) @categories = Categories.create(@opts.categories_path, DocFormatter.new(@relations, @opts), @relations) if @opts.export == :json if @opts.export format_classes if @opts.output_dir == :stdout puts JsonDuck.generate(@relations.classes) else FileUtils.rm_rf(@opts.output_dir) cw = ClassWriter.new(JsonExporter, @relations, @opts) cw.write(@opts.output_dir) end elsif @opts.export == :api format_classes if @opts.output_dir == :stdout exporter = ApiExporter.new({}, {}) puts JsonDuck.generate(@relations.classes.map {|cls| exporter.export(cls) }) else FileUtils.rm_rf(@opts.output_dir) cw = ClassWriter.new(ApiExporter, @relations, @opts) cw.write(@opts.output_dir) end FileUtils.rm_rf(@opts.output_dir) unless @opts.output_dir == :stdout exporters = {:json => JsonExporter, :api => ApiExporter} cw = ClassWriter.new(exporters[@opts.export], @relations, @opts) cw.write(@opts.output_dir, ".json") else FileUtils.rm_rf(@opts.output_dir) TemplateDir.new(@opts).write Loading @@ -97,7 +84,7 @@ module JsDuck format_classes cw = ClassWriter.new(JsonPExporter, @relations, @opts) cw.write(@opts.output_dir+"/output") cw.write(@opts.output_dir+"/output", ".js") @guides.write(@opts.output_dir+"/guides") @videos.write(@opts.output_dir+"/videos") Loading
lib/jsduck/class_writer.rb +27 −5 Original line number Diff line number Diff line require 'jsduck/parallel_wrap' require 'jsduck/logger' require 'jsduck/json_duck' require 'fileutils' module JsDuck # Writes class data into files # Writes class data into files in JSON or JSONP format or to STDOUT. class ClassWriter def initialize(exporter_class, relations, opts) @relations = relations Loading @@ -12,13 +13,34 @@ module JsDuck @parallel = ParallelWrap.new(:in_processes => opts.processes) end # Writes class data into given directory def write(dir) # Writes class data into given directory or STDOUT when dir == :stdout. # # Extension is either ".json" for normal JSON output # or ".js" for JsonP output. def write(dir, extension) dir == :stdout ? write_stdout : write_dir(dir, extension) end private def write_stdout json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) } puts JsonDuck.generate(json) end def write_dir(dir, extension) FileUtils.mkdir(dir) @parallel.each(@relations.classes) do |cls| filename = dir + "/" + cls[:name] + @exporter.extension filename = dir + "/" + cls[:name] + extension Logger.instance.log("Writing docs", filename) @exporter.write(filename, cls) json = @exporter.export(cls) if extension == ".json" JsonDuck.write_json(filename, json) elsif extension == ".js" JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), json) else throw "Unexpected file extension: #{extension}" end end end Loading
lib/jsduck/json_exporter.rb +3 −9 Original line number Diff line number Diff line require 'jsduck/exporter' require 'jsduck/json_duck' module JsDuck Loading @@ -9,14 +8,9 @@ module JsDuck @exporter = Exporter.new(relations) end # Extension for filename def extension ".json" end # Writes full class data in JSON format to file def write(filename, cls) JsonDuck.write_json(filename, @exporter.export(cls)) # Returns full class data hash def export @exporter.export(cls) end end Loading
lib/jsduck/json_p_exporter.rb +3 −10 Original line number Diff line number Diff line require 'jsduck/exporter' require 'jsduck/json_duck' require 'jsduck/renderer' require 'jsduck/doc_formatter' Loading @@ -17,17 +16,11 @@ module JsDuck renderer.meta_tags = @opts.meta_tags end # Extension for filename def extension ".js" end # Writes compacted class data in JsonP format to file def write(filename, cls) # Returns compacted class data hash def export(cls) data = @exporter.export(cls) data[:html] = @renderer.render(data) data = @exporter.compact(data) JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), data) return @exporter.compact(data) end end Loading