Sha256: 44193c6b75d44ada66a4ddb797bffba627ba6d3ef8c565622d5cb90f4b3d127d

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

# Conversions is meant to be a common module used to define standard conversion
# methods. Anytime one of the standard conversion methods are needed, the
# Conversions module can be included and then used freely.
module Conversions
  require_relative "comparable_version"

  # The `ComparableVersion()` conversion method is defined as a module_function so that it
  # may also be called directly without needing to include the Conversions module
  # if so desired.
  #
  # @example
  #   Conversions.ComparableVersion(1.2).to_s # => "1.2"
  module_function

  # Strict conversion method for creating a `ComparableVersion` object out of anything
  # that sensibly is a ComparableVersion.
  #
  # @param [Object] value the object to be converted
  #
  # @example
  #   ComparableVersion(1) # => #<ComparableVersion:0x007fd8144ea658 @major=1, @minor=nil, @tiny=nil, @patch=nil>
  #   ComparableVersion(1.2) # => #<ComparableVersion:0x007fd8144ea658 @major=1, @minor=2, @tiny=nil, @patch=nil>
  #   ComparableVersion("1.2.3") # => #<ComparableVersion:0x007fd8144ea658 @major=1, @minor=2, @tiny=3, @patch=nil>
  #   ComparableVersion(["1", "2", "3", "4"]) # => #<ComparableVersion:0x007fd8144f98b0 @major=1, @minor=2, @tiny=3, @patch=4>
  def ComparableVersion(value)
    case value
    when String,
         Integer,
         Float,
         -> val { val.respond_to?(:to_ary) }
      ComparableVersion.new(value)
    when -> val { val.respond_to?(:to_comparable_version) }
      value.to_comparable_version
    else
      raise TypeError, "Cannot convert #{value.inspect} to ComparableVersion"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
version_compare-0.1.1 lib/version_compare/conversions.rb