Sha256: d28ca864e329c289f4b1aea3a4c750bbde8f99a725a1b54ad8868fd2a93cb2d3

Contents?: true

Size: 731 Bytes

Versions: 2

Compression:

Stored size: 731 Bytes

Contents

# frozen_string_literal: true

require 'dry-types'

require_relative './range'

# `Types` as a top-level namespace module seems to be a `dry-types` convention.
module Types
  include Dry::Types.module # should have already been included

  # The original version of this type treated initialisation with an integer
  # value of zero as invalid, setting the initialised range to (-1..-1). On
  # reflection, this makes little sense as a general-purpose behaviour, as it is
  # highly likely to surprise casual users.
  IntegerRange = Range.constructor do |value|
    if value.respond_to?(:minmax) # Enumerable; eg, Range or Array
      value.min..value.max
    else # it *better* be an Integer
      0..value.to_i
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
prolog-dry_types-0.3.0 lib/prolog/dry_types/integer_range.rb
prolog-dry_types-0.2.0 lib/prolog/dry_types/integer_range.rb