Commit d33184ad authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Showing filename and line number in warnings.

Now remembering source filename and line number of all doc-objects.
parent e5ba0257
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -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
+9 −5
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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