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

Sort mixins/requires/uses/etc in export.

This ensures that when running the export repeatedly the order
of mixins/requires/etc will stay the same.  Especially in the
case of mixins which are often defined in an object literal which
gets turned into a Ruby hash that messes up the order quite a bit.

By doing the sorting in Export::Full the Renderer no more needs
to sort these things.
parent 112e6341
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -24,13 +24,14 @@ module JsDuck
        end
        h[:component] = cls.inherits_from?("Ext.Component")
        h[:superclasses] = cls.superclasses.collect {|c| c[:name] }
        h[:subclasses] = @relations.subclasses(cls).collect {|c| c[:name] }
        h[:mixedInto] = @relations.mixed_into(cls).collect {|c| c[:name] }

        h[:mixins] = cls.deps(:mixins).collect {|c| c[:name] }
        h[:parentMixins] = cls.parent_deps(:mixins).collect {|c| c[:name] }
        h[:requires] = cls.deps(:requires).collect {|c| c[:name] }
        h[:uses] = cls.deps(:uses).collect {|c| c[:name] }
        h[:subclasses] = @relations.subclasses(cls).collect {|c| c[:name] }.sort
        h[:mixedInto] = @relations.mixed_into(cls).collect {|c| c[:name] }.sort
        h[:alternateClassNames] = cls[:alternateClassNames].sort

        h[:mixins] = cls.deps(:mixins).collect {|c| c[:name] }.sort
        h[:parentMixins] = cls.parent_deps(:mixins).collect {|c| c[:name] }.sort
        h[:requires] = cls.deps(:requires).collect {|c| c[:name] }.sort
        h[:uses] = cls.deps(:uses).collect {|c| c[:name] }.sort

        h
      end
+2 −2
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ module JsDuck
      return if @cls[:alternateClassNames].length == 0
      return [
        "<h4>Alternate names</h4>",
        @cls[:alternateClassNames].sort.map {|name| "<div class='alternate-class-name'>#{name}</div>" },
        @cls[:alternateClassNames].map {|name| "<div class='alternate-class-name'>#{name}</div>" },
      ]
    end

@@ -96,7 +96,7 @@ module JsDuck
      return if !@cls[type] || @cls[type].length == 0
      return [
        "<h4>#{title}</h4>",
        @cls[type].sort.map {|name| "<div class='dependency'>#{name.exists? ? render_link(name) : name}</div>" },
        @cls[type].map {|name| "<div class='dependency'>#{name.exists? ? render_link(name) : name}</div>" },
      ]
    end