Commit 7148821d authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Show list of all source files of class.

Instead of :filename and :linenr properties being tied to class hash
itself, they are now inside :files property, which holds an array of
hashes which contain :filename and :linenr.

List of files is shown in the hierarchy sidebar. Especially useful for
classes like Ext.Element which are made up from many-many files.
parent c621c137
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ module JsDuck
      [:extends, :singleton, :private, :protected].each do |tag|
        old[tag] = old[tag] || new[tag]
      end
      [:mixins, :alternateClassNames].each do |tag|
      [:mixins, :alternateClassNames, :files].each do |tag|
        old[tag] = old[tag] + new[tag]
      end
      new[:xtypes].each_pair do |key, xtypes|
@@ -144,9 +144,7 @@ module JsDuck
        :alternateClassNames => [],
        :members => Class.default_members_hash,
        :statics => Class.default_members_hash,
        :filename => "",
        :html_filename => "",
        :linenr => 0,
        :files => [{:filename => "", :html_filename => "", :linenr => 0}],
      })
    end

+3 −2
Original line number Diff line number Diff line
@@ -28,16 +28,17 @@ module JsDuck
    # Given aliased member, finds the original member.
    # If the original also happens to be an alias, continue recursively.
    def find_original(al)
      context = al[:files][0]
      al_def = al[:alias]

      orig = @relations[al_def[:cls]]
      unless orig
        Logger.instance.warn("Class #{al_def[:cls]} not found", al[:filename], al[:linenr])
        Logger.instance.warn("Class #{al_def[:cls]} not found", context[:filename], context[:linenr])
        return al
      end
      orig = orig.get_member(al_def[:member], al_def[:type] || al[:tagname])
      unless orig
        Logger.instance.warn("Member #{al_def[:cls]}##{al_def[:member]} not found", al[:filename], al[:linenr])
        Logger.instance.warn("Member #{al_def[:cls]}##{al_def[:member]} not found", context[:filename], context[:linenr])
        return al
      end

+2 −3
Original line number Diff line number Diff line
@@ -144,9 +144,8 @@ module JsDuck
        else
          type = d[:tagname].to_s
          name = d[:name]
          file = d[:filename]
          line = d[:linenr]
          Logger.instance.warn("Ignoring #{type}: #{name}", file, line)
          file = d[:files][0]
          Logger.instance.warn("Ignoring #{type}: #{name}", file[:filename], file[:linenr])
        end
      end
      Relations.new(classes, @opts.external_classes)
+2 −1
Original line number Diff line number Diff line
@@ -61,7 +61,8 @@ module JsDuck
      if @relations[classname]
        @relations[classname]
      elsif !@relations.ignore?(classname)
        Logger.instance.warn("Class #{classname} not found", @doc[:filename], @doc[:linenr])
        context = @doc[:files][0]
        Logger.instance.warn("Class #{classname} not found", context[:filename], context[:linenr])
        nil
      end
    end
+2 −2
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ module JsDuck
    def format(cls)
      @cls = cls
      @formatter.class_context = cls[:name]
      @formatter.doc_context = cls
      @formatter.doc_context = cls[:files][0]
      cls[:doc] = @formatter.format(cls[:doc]) if cls[:doc]
      cls[:members].each_pair do |type, members|
        cls[:members][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
@@ -46,7 +46,7 @@ module JsDuck
    end

    def format_member(m)
      @formatter.doc_context = m
      @formatter.doc_context = m[:files][0]
      m[:doc] = @formatter.format(m[:doc]) if m[:doc]
      m[:deprecated][:text] = @formatter.format(m[:deprecated][:text]) if m[:deprecated]
      if expandable?(m) || @formatter.too_long?(m[:doc])
Loading