Sha256: ce7d99733b84e73fd89b69dbba287423aaaf3e1a57701d33866c35b1a9966d68

Contents?: true

Size: 1.21 KB

Versions: 16

Compression:

Stored size: 1.21 KB

Contents

#--
# Author::    Tyler Rick
# Copyright:: Copyright (c) 2007 QualitySmith, Inc.
# License::   Ruby License
# Submit to Facets?:: Yes.
#++

require 'rubygems'
require 'facets/core/kernel/silence_warnings'

class Array
  # Expands (calls +to_a+ on) all Ranges contained in this array, replacing the range with the list of *elements* that the range represents.
  #
  # This is especially useful when you want to have "discontiguous ranges" like [1..3, 5..7]...
  #
  #   [1..3, 5..7].expand_ranges
  #   => [1, 2, 3, 5, 6, 7]
  #
  def expand_ranges
    new_array = []
    each do |item|
      silence_warnings do             # Object.to_a: warning: default `to_a' will be obsolete
        if item.respond_to?(:to_a)
          new_array.concat item.to_a
        else
          new_array.concat [item]
        end
      end
    end
    new_array
  end
end

#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test
require 'test/unit'
class TheTest < Test::Unit::TestCase
  def test_1
    assert_equal [1, 2, 3], [1, 2, 3].expand_ranges
  end
  def test_2
    assert_equal [1, 2, 3], [1..3].expand_ranges
    assert_equal [1, 2, 3, 5, 6, 7], [1..3, 5..7].expand_ranges
  end
end
=end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
quality_extensions-0.1.2 lib/quality_extensions/array/expand_ranges.rb
quality_extensions-0.1.4 lib/quality_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.13 lib/qualitysmith_extensions/array/expand_ranges.rb
quality_extensions-0.1.1 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.34 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.6 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.29 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.33 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.60 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.64 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.17 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.24 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.7 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.20 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.63 lib/qualitysmith_extensions/array/expand_ranges.rb
qualitysmith_extensions-0.0.49 lib/qualitysmith_extensions/array/expand_ranges.rb