Sha256: 2dc4c10b3bb95f5504b0d1ea66f375efe47d659bf792a24af528e650872bbf03

Contents?: true

Size: 1.2 KB

Versions: 22

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

Range.class_eval do
  # Allows adding a to a range. This will create a new range since ranges are immutable.
  #
  # @note Make sure to assign this to a new var or 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

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
ruby-rails-extensions-2.1.2 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.2.pre.pre.pre.1 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.1 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.14 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.13 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.12 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.11 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.10 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.9 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.8 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.7 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.6 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.5 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.4 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.3 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.2 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.1.0.pre.rc.1 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.0.1 lib/ruby-rails-extensions/extensions/range_add.rb
ruby-rails-extensions-2.0.1.pre.rc.1 lib/ruby-rails-extensions/extensions/range_add.rb