Commit 1fb59189 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Better organization of methods in Process::Versions.

parent da71b742
Loading
Loading
Loading
Loading
+46 −38
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ module JsDuck

      private

      # classes...

      # Using the imported versions data, adds @since tags to all
      # classes/members/params.
      def add_since_tags
@@ -35,6 +37,18 @@ module JsDuck
        end
      end

      # Returns name of the version since which the class is available
      def class_since(cls)
        @versions.each do |ver|
          return ver[:version] if ver[:classes][cls[:name]]
          cls[:alternateClassNames].each do |name|
            return ver[:version] if ver[:classes][name]
          end
        end
      end

      # members...

      def add_members_since_tags(cls)
        cls.all_local_members.each do |m|
          # Remember the initial explicit @since tag value
@@ -49,6 +63,19 @@ module JsDuck
        end
      end

      def member_since(cls, m)
        @versions.each do |ver|
          c = ver[:classes][cls[:name]]
          return ver[:version] if c && c[m[:id]]
          cls[:alternateClassNames].each do |name|
            c = ver[:classes][name]
            return ver[:version] if c && c[m[:id]]
          end
        end
      end

      # params...

      def add_params_since_tags(cls, member, member_version)
        Array(member[:params]).each_with_index do |p, i|
          v = param_since(cls, member, i)
@@ -59,6 +86,25 @@ module JsDuck
        end
      end

      def param_since(cls, m, i)
        @versions.each do |ver|
          c = ver[:classes][cls[:name]]
          return ver[:version] if c && has_param?(c[m[:id]], i)
          cls[:alternateClassNames].each do |name|
            c = ver[:classes][name]
            return ver[:version] if c && has_param?(c[m[:id]], i)
          end
        end
      end

      # Because parameters can be renamed between versions, only
      # consider parameter count.
      def has_param?(member, param_index)
        member && member.respond_to?(:length) && member.length > param_index
      end

      # helpers...

      # Should items introduced in given version be marked as new?
      def is_new?(version_nr)
        @new_versions = new_versions_map unless @new_versions
@@ -84,44 +130,6 @@ module JsDuck
        new_versions
      end

      def param_since(cls, m, i)
        @versions.each do |ver|
          c = ver[:classes][cls[:name]]
          return ver[:version] if c && has_param?(c[m[:id]], i)
          cls[:alternateClassNames].each do |name|
            c = ver[:classes][name]
            return ver[:version] if c && has_param?(c[m[:id]], i)
          end
        end
      end

      # Because parameters can be renamed between versions, only
      # consider parameter count.
      def has_param?(member, param_index)
        member && member.respond_to?(:length) && member.length > param_index
      end

      def member_since(cls, m)
        @versions.each do |ver|
          c = ver[:classes][cls[:name]]
          return ver[:version] if c && c[m[:id]]
          cls[:alternateClassNames].each do |name|
            c = ver[:classes][name]
            return ver[:version] if c && c[m[:id]]
          end
        end
      end

      # Returns name of the version since which the class is available
      def class_since(cls)
        @versions.each do |ver|
          return ver[:version] if ver[:classes][cls[:name]]
          cls[:alternateClassNames].each do |name|
            return ver[:version] if ver[:classes][name]
          end
        end
      end

    end

  end