Loading lib/jsduck/app.rb +13 −7 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ require 'jsduck/tree' require 'jsduck/tree_icons' require 'jsduck/subclasses' require 'jsduck/page' require 'jsduck/timer' require 'json' require 'fileutils' Loading @@ -24,14 +25,18 @@ module JsDuck @template_dir = nil @input_files = [] @verbose = false @timer = Timer.new end # Call this after input parameters set def run copy_template(@template_dir, @output_dir) classes = filter_classes(parse_files(@input_files)) write_tree(@output_dir+"/output/tree.js", classes) write_pages(@output_dir+"/output", classes) result = parse_files(@input_files) classes = @timer.time(:parsing) { filter_classes(result) } @timer.time(:generating) { write_tree(@output_dir+"/output/tree.js", classes) } @timer.time(:generating) { write_pages(@output_dir+"/output", classes) } @timer.report if @verbose end # Given array of filenames, parses all files and returns array of Loading @@ -41,9 +46,9 @@ module JsDuck src = SourceFormatter.new(@output_dir + "/source") filenames.each do |fname| puts "Parsing #{fname} ..." if @verbose code = IO.read(fname) src_fname = src.write(code, fname) agr.parse(code, File.basename(fname), File.basename(src_fname)) code = @timer.time(:parsing) { IO.read(fname) } src_fname = @timer.time(:generating) { src.write(code, fname) } @timer.time(:parsing) { agr.parse(code, File.basename(fname), File.basename(src_fname)) } end agr.result end Loading Loading @@ -78,7 +83,8 @@ module JsDuck docs.each do |cls| filename = path + "/" + cls[:name] + ".html" puts "Writing to #{filename} ..." if @verbose File.open(filename, 'w') {|f| f.write( Page.new(cls, subclasses).to_html ) } html = Page.new(cls, subclasses).to_html File.open(filename, 'w') {|f| f.write(html) } end end Loading lib/jsduck/timer.rb 0 → 100644 +40 −0 Original line number Diff line number Diff line module JsDuck # Helper for timing execution of named code blocks. # # timer = Timer.new # a = timer.time(:sum) { 5 + 5 } # b = timer.time(:sum) { 5 + 5 } # c = timer.time(:mult) { 5 * 5 } # d = timer.time(:mult) { 5 * 5 } # timer.report # # The #report method will print sum of the time spent in each # category. # class Timer def initialize @timings = {} end # Performs timing of one code block. # Returns the same value that code block returns. def time(name) begin_time = Time.now result = yield interval = Time.now - begin_time if @timings[name] @timings[name] += interval else @timings[name] = interval end result end # prints timings report to console def report @timings.each {|name, time| puts "#{name}:\t#{time} seconds" } end end end Loading
lib/jsduck/app.rb +13 −7 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ require 'jsduck/tree' require 'jsduck/tree_icons' require 'jsduck/subclasses' require 'jsduck/page' require 'jsduck/timer' require 'json' require 'fileutils' Loading @@ -24,14 +25,18 @@ module JsDuck @template_dir = nil @input_files = [] @verbose = false @timer = Timer.new end # Call this after input parameters set def run copy_template(@template_dir, @output_dir) classes = filter_classes(parse_files(@input_files)) write_tree(@output_dir+"/output/tree.js", classes) write_pages(@output_dir+"/output", classes) result = parse_files(@input_files) classes = @timer.time(:parsing) { filter_classes(result) } @timer.time(:generating) { write_tree(@output_dir+"/output/tree.js", classes) } @timer.time(:generating) { write_pages(@output_dir+"/output", classes) } @timer.report if @verbose end # Given array of filenames, parses all files and returns array of Loading @@ -41,9 +46,9 @@ module JsDuck src = SourceFormatter.new(@output_dir + "/source") filenames.each do |fname| puts "Parsing #{fname} ..." if @verbose code = IO.read(fname) src_fname = src.write(code, fname) agr.parse(code, File.basename(fname), File.basename(src_fname)) code = @timer.time(:parsing) { IO.read(fname) } src_fname = @timer.time(:generating) { src.write(code, fname) } @timer.time(:parsing) { agr.parse(code, File.basename(fname), File.basename(src_fname)) } end agr.result end Loading Loading @@ -78,7 +83,8 @@ module JsDuck docs.each do |cls| filename = path + "/" + cls[:name] + ".html" puts "Writing to #{filename} ..." if @verbose File.open(filename, 'w') {|f| f.write( Page.new(cls, subclasses).to_html ) } html = Page.new(cls, subclasses).to_html File.open(filename, 'w') {|f| f.write(html) } end end Loading
lib/jsduck/timer.rb 0 → 100644 +40 −0 Original line number Diff line number Diff line module JsDuck # Helper for timing execution of named code blocks. # # timer = Timer.new # a = timer.time(:sum) { 5 + 5 } # b = timer.time(:sum) { 5 + 5 } # c = timer.time(:mult) { 5 * 5 } # d = timer.time(:mult) { 5 * 5 } # timer.report # # The #report method will print sum of the time spent in each # category. # class Timer def initialize @timings = {} end # Performs timing of one code block. # Returns the same value that code block returns. def time(name) begin_time = Time.now result = yield interval = Time.now - begin_time if @timings[name] @timings[name] += interval else @timings[name] = interval end result end # prints timings report to console def report @timings.each {|name, time| puts "#{name}:\t#{time} seconds" } end end end