Sha256: c117b2861303f0d6f865a3938fed6509edab4652da113276bf00e49fcc8fa5a2

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module RubyNext
  # Mininum Ruby version supported by RubyNext
  MIN_SUPPORTED_VERSION = Gem::Version.new("2.2.0")

  # Where to store transpiled files (relative from the project LOAD_PATH, usually `lib/`)
  RUBY_NEXT_DIR = ".rbnext"

  # Defines last minor version for every major version
  LAST_MINOR_VERSIONS = {
    2 => 8, # 2.8 is required for backward compatibility: some gems already uses it
    3 => 1
  }.freeze

  LATEST_VERSION = [3, 1].freeze

  # A virtual version number used for proposed features
  NEXT_VERSION = "1995.next.0"

  class << self
    # TruffleRuby claims it's 2.7.2 compatible but...
    if defined?(TruffleRuby) && ::RUBY_VERSION =~ /^2\.7/
      def current_ruby_version
        "2.6.5"
      end
    else
      def current_ruby_version
        ::RUBY_VERSION
      end
    end

    def next_ruby_version(version = current_ruby_version)
      return if version == Gem::Version.new(NEXT_VERSION)

      major, minor = Gem::Version.new(version).segments.map(&:to_i)

      return Gem::Version.new(NEXT_VERSION) if major >= LATEST_VERSION.first && minor >= LATEST_VERSION.last

      nxt =
        if LAST_MINOR_VERSIONS[major] == minor
          "#{major + 1}.0.0"
        else
          "#{major}.#{minor + 1}.0"
        end

      Gem::Version.new(nxt)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ruby-next-core-0.15.1 lib/ruby-next/config.rb
ruby-next-core-0.15.0 lib/ruby-next/config.rb
ruby-next-core-0.14.1 lib/ruby-next/config.rb
ruby-next-core-0.14.0 lib/ruby-next/config.rb