Sha256: 65fe1e5377d43380a077b4cd72b5743dc8db51d119753fc9184356a1522467ff
Contents?: true
Size: 1.32 KB
Versions: 6
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true Range.class_eval do unless method_defined?(:*) # Allows multiplying a range. This will create a new range due to range objects being immutable. # # @note Make sure to assign this to a new var or do inline replacement `*=`. # # @raise [RubyRailsExtensions::Errors::NonNumericError] # # @param other [Numeric, Range<Numeric>] # # @return [Range] # def *(other) unless self.begin.is_a?(Numeric) raise( RubyRailsExtensions::Errors::NonNumericError, "Wrong range type (given #{self.begin.class}, expected Numeric)" ) end new_begin, new_end = if other.is_a?(Range) unless other.begin.is_a?(Numeric) raise( RubyRailsExtensions::Errors::NonNumericError, "Wrong range type (given #{other.begin.class}, expected Numeric)" ) end [self.begin * other.begin, self.end * other.end] else unless other.is_a?(Numeric) raise( RubyRailsExtensions::Errors::NonNumericError, "Wrong type (given #{other.class}, expected Numeric)" ) end [self.begin * other, self.end * other] end Range.new(new_begin, new_end, exclude_end?) end end end
Version data entries
6 entries across 6 versions & 1 rubygems