Loading lib/jsduck/aggregator.rb +18 −11 Original line number Diff line number Diff line Loading @@ -24,21 +24,28 @@ module JsDuck def aggregate(input, filename="", html_filename="") @current_class = nil input.each do |docset| doc = docset[:comment] code = docset[:code] href = html_filename + "#line-" + docset[:linenr].to_s register(add_href(@merger.merge(doc, code), href, filename)) doc = @merger.merge(docset[:comment], docset[:code]) add_source_data(doc, { :filename => filename, :html_filename => html_filename, :linenr => docset[:linenr], }) register(doc) end end # Tags doc-object with link to source code where it came from. # For class we also store the name of the JavaScript file. def add_href(doc, href, filename) doc[:href] = href # Links doc-object to source code where it came from. def add_source_data(doc, src) doc[:href] = src[:html_filename] + "#line-" + src[:linenr].to_s doc[:filename] = src[:filename] doc[:linenr] = src[:linenr] # class-level doc-comment can contain constructor and config # options, link those to the same location in source. if doc[:tagname] == :class doc[:filename] = filename doc[:cfg].each {|cfg| cfg[:href] = href } doc[:method].each {|method| method[:href] = href } doc[:cfg].each {|cfg| add_source_data(cfg, src) } doc[:method].each {|method| add_source_data(method, src) } end doc end Loading lib/jsduck/app.rb +9 −5 Original line number Diff line number Diff line Loading @@ -50,8 +50,8 @@ module JsDuck puts "Parsing #{fname} ..." if @verbose code = IO.read(fname) { :name => fname, :src_name => src.write(code, fname), :filename => fname, :html_filename => File.basename(src.write(code, fname)), :data => Parser.new(code).parse, } end Loading @@ -61,8 +61,8 @@ module JsDuck def aggregate(parsed_files) agr = Aggregator.new parsed_files.each do |file| puts "Aggregating #{file[:name]} ..." if @verbose agr.aggregate(file[:data], File.basename(file[:name]), File.basename(file[:src_name])) puts "Aggregating #{file[:filename]} ..." if @verbose agr.aggregate(file[:data], file[:filename], file[:html_filename]) end agr.result end Loading @@ -75,7 +75,11 @@ module JsDuck if d[:tagname] == :class classes[d[:name]] = Class.new(d, classes) else puts "Warning: Ignoring " + d[:tagname].to_s + ": " + (d[:name] || "") type = d[:tagname].to_s name = d[:name] file = d[:filename] line = d[:linenr] puts "Warning: Ignoring #{type}: #{name} in #{file} line #{line}" end end classes.values Loading lib/jsduck/page.rb +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ module JsDuck end def file_link "<a href='source/#{@cls[:href]}'>#{@cls[:filename]}</a>" "<a href='source/#{@cls[:href]}'>#{File.basename(@cls[:filename])}</a>" end def subclasses Loading Loading
lib/jsduck/aggregator.rb +18 −11 Original line number Diff line number Diff line Loading @@ -24,21 +24,28 @@ module JsDuck def aggregate(input, filename="", html_filename="") @current_class = nil input.each do |docset| doc = docset[:comment] code = docset[:code] href = html_filename + "#line-" + docset[:linenr].to_s register(add_href(@merger.merge(doc, code), href, filename)) doc = @merger.merge(docset[:comment], docset[:code]) add_source_data(doc, { :filename => filename, :html_filename => html_filename, :linenr => docset[:linenr], }) register(doc) end end # Tags doc-object with link to source code where it came from. # For class we also store the name of the JavaScript file. def add_href(doc, href, filename) doc[:href] = href # Links doc-object to source code where it came from. def add_source_data(doc, src) doc[:href] = src[:html_filename] + "#line-" + src[:linenr].to_s doc[:filename] = src[:filename] doc[:linenr] = src[:linenr] # class-level doc-comment can contain constructor and config # options, link those to the same location in source. if doc[:tagname] == :class doc[:filename] = filename doc[:cfg].each {|cfg| cfg[:href] = href } doc[:method].each {|method| method[:href] = href } doc[:cfg].each {|cfg| add_source_data(cfg, src) } doc[:method].each {|method| add_source_data(method, src) } end doc end Loading
lib/jsduck/app.rb +9 −5 Original line number Diff line number Diff line Loading @@ -50,8 +50,8 @@ module JsDuck puts "Parsing #{fname} ..." if @verbose code = IO.read(fname) { :name => fname, :src_name => src.write(code, fname), :filename => fname, :html_filename => File.basename(src.write(code, fname)), :data => Parser.new(code).parse, } end Loading @@ -61,8 +61,8 @@ module JsDuck def aggregate(parsed_files) agr = Aggregator.new parsed_files.each do |file| puts "Aggregating #{file[:name]} ..." if @verbose agr.aggregate(file[:data], File.basename(file[:name]), File.basename(file[:src_name])) puts "Aggregating #{file[:filename]} ..." if @verbose agr.aggregate(file[:data], file[:filename], file[:html_filename]) end agr.result end Loading @@ -75,7 +75,11 @@ module JsDuck if d[:tagname] == :class classes[d[:name]] = Class.new(d, classes) else puts "Warning: Ignoring " + d[:tagname].to_s + ": " + (d[:name] || "") type = d[:tagname].to_s name = d[:name] file = d[:filename] line = d[:linenr] puts "Warning: Ignoring #{type}: #{name} in #{file} line #{line}" end end classes.values Loading
lib/jsduck/page.rb +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ module JsDuck end def file_link "<a href='source/#{@cls[:href]}'>#{@cls[:filename]}</a>" "<a href='source/#{@cls[:href]}'>#{File.basename(@cls[:filename])}</a>" end def subclasses Loading