Sha256: b0c2a49ae96715d9d2adc214aafe1676983bf3bb347caea45514c4c828c73da0

Contents?: true

Size: 1.89 KB

Versions: 66

Compression:

Stored size: 1.89 KB

Contents

require 'semantic/dependency'

module Semantic
  module Dependency
    class ModuleRelease
      include GraphNode

      attr_reader :name, :version

      # Create a new instance of a module release.
      #
      # @param source [Semantic::Dependency::Source]
      # @param name [String]
      # @param version [Semantic::Version]
      # @param dependencies [{String => Semantic::VersionRange}]
      def initialize(source, name, version, dependencies = {})
        @source      = source
        @name        = name.freeze
        @version     = version.freeze

        dependencies.each do |name, range|
          add_constraint('initialize', name, range.to_s) do |node|
            range === node.version
          end

          add_dependency(name)
        end
      end

      def priority
        @source.priority
      end

      def <=>(oth)
        # Note that prior to ruby 2.3.0, if a <=> method threw an exception, ruby
        # would silently rescue the exception and return nil from <=> (which causes
        # the derived == comparison to return false). Starting in ruby 2.3.0, this
        # behavior changed and the exception is actually thrown. Some comments at:
        # https://bugs.ruby-lang.org/issues/7688
        #
        # So simply return nil here if any of the needed fields are not available,
        # since attempting to access a missing field is one way to force an exception.
        # This doesn't help if the  <=> use below throws an exception, but it
        # handles the most typical cause.
        return nil if !oth.respond_to?(:priority) ||
                      !oth.respond_to?(:name)     ||
                      !oth.respond_to?(:version)

        our_key   = [ priority, name, version ]
        their_key = [ oth.priority, oth.name, oth.version ]

        return our_key <=> their_key
      end

      def to_s
        "#<#{self.class} #{name}@#{version}>"
      end
    end
  end
end

Version data entries

66 entries across 66 versions & 2 rubygems

Version Path
puppet-retrospec-1.5.0 vendor/gems/puppet-4.5.2/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-retrospec-1.4.1 vendor/gems/puppet-4.5.2/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-retrospec-1.4.0 vendor/gems/puppet-4.5.2/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-retrospec-1.3.2 vendor/gems/puppet-4.5.2/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-retrospec-1.3.1 vendor/gems/puppet-4.5.2/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-retrospec-1.3.0 vendor/gems/puppet-4.5.2/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.2 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.2-x86-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.2-x64-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.2-universal-darwin lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.7.1 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.7.1-x86-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.7.1-x64-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.7.1-universal-darwin lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.1 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.1-x86-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.1-x64-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.1-universal-darwin lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.0 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb
puppet-4.8.0-x86-mingw32 lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb