Added Array#from and Array#to that behaves just from String#from and String#to [DHH]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8224 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson
2007-11-27 19:42:30 +00:00
parent 69165404be
commit 4d177ae0d6
4 changed files with 46 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* Added Array#from and Array#to that behaves just from String#from and String#to [DHH]
* Fix that empty collections should be treated as empty arrays regardless of whitespace for Hash#from_xml #10255 [adamj]
* Time#time_with_datetime_fallback, Time#to_datetime, Date#to_datetime and String#to_datetime honor Ruby's default calendar reform setting. #10201 [Geoff Buesing]

View File

@@ -1,9 +1,11 @@
require 'active_support/core_ext/array/access'
require 'active_support/core_ext/array/conversions'
require 'active_support/core_ext/array/extract_options'
require 'active_support/core_ext/array/grouping'
require 'active_support/core_ext/array/random_access'
class Array #:nodoc:
include ActiveSupport::CoreExtensions::Array::Access
include ActiveSupport::CoreExtensions::Array::Conversions
include ActiveSupport::CoreExtensions::Array::ExtractOptions
include ActiveSupport::CoreExtensions::Array::Grouping

View File

@@ -0,0 +1,28 @@
module ActiveSupport #:nodoc:
module CoreExtensions #:nodoc:
module Array #:nodoc:
# Makes it easier to access parts of an array.
module Access
# Returns the remaining of the array from the +position+.
#
# Examples:
# %w( a b c d ).from(0) # => %w( a b c d )
# %w( a b c d ).from(2) # => %w( c d )
# %w( a b c d ).from(10) # => nil
def from(position)
self[position..-1]
end
# Returns the beginning of the array up to the +position+.
#
# Examples:
# %w( a b c d ).to(0) # => %w( a )
# %w( a b c d ).to(2) # => %w( a b c )
# %w( a b c d ).to(10) # => %w( a b c d )
def to(position)
self[0..position]
end
end
end
end
end

View File

@@ -1,6 +1,20 @@
require File.dirname(__FILE__) + '/../abstract_unit'
require 'bigdecimal'
class ArrayExtAccessTests < Test::Unit::TestCase
def test_from
assert_equal %w( a b c d ), %w( a b c d ).from(0)
assert_equal %w( c d ), %w( a b c d ).from(2)
assert_nil %w( a b c d ).from(10)
end
def test_to
assert_equal %w( a ), %w( a b c d ).to(0)
assert_equal %w( a b c ), %w( a b c d ).to(2)
assert_equal %w( a b c d ), %w( a b c d ).to(10)
end
end
class ArrayExtToParamTests < Test::Unit::TestCase
def test_string_array
assert_equal '', %w().to_param