mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Added Array#to_sentence that'll turn ['one', 'two', 'three'] into 'one, two, and three' #2157 [m.stienstra@fngtps.com]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2185 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Added Array#to_sentence that'll turn ['one', 'two', 'three'] into "one, two, and three" #2157 [m.stienstra@fngtps.com]
|
||||
|
||||
* Added Kernel#silence_warnings to turn off warnings temporarily for the passed block
|
||||
|
||||
* Added String#starts_with? and String#ends_with? #2118 [thijs@vandervossen.net]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require File.dirname(__FILE__) + '/array/to_param'
|
||||
require File.dirname(__FILE__) + '/array/conversions'
|
||||
|
||||
class Array #:nodoc:
|
||||
include ActiveSupport::CoreExtensions::Array::ToParam
|
||||
include ActiveSupport::CoreExtensions::Array::Conversions
|
||||
end
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
module ActiveSupport #:nodoc:
|
||||
module CoreExtensions #:nodoc:
|
||||
module Array #:nodoc:
|
||||
# Enables to conversion of Arrays to human readable lists. ['one', 'two', 'three'] => "one, two, and three"
|
||||
module Conversions
|
||||
# Converts the array to comma-seperated sentence where the last element is joined by the connector word (default is 'and').
|
||||
def to_sentence(connector = 'and')
|
||||
if length > 1
|
||||
"#{self[0...-1].join(', ')}, #{connector} #{self[-1]}"
|
||||
elsif length == 1
|
||||
self[0]
|
||||
end
|
||||
end
|
||||
|
||||
# When an array is given to url_for, it is converted to a slash separated string.
|
||||
def to_param
|
||||
join '/'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,12 +0,0 @@
|
||||
module ActiveSupport #:nodoc:
|
||||
module CoreExtensions #:nodoc:
|
||||
module Array #:nodoc:
|
||||
module ToParam #:nodoc:
|
||||
# When an array is given to url_for, it is converted to a slash separated string.
|
||||
def to_param
|
||||
join '/'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -12,3 +12,17 @@ class ArrayExtToParamTests < Test::Unit::TestCase
|
||||
assert_equal '10/20', [10, 20].to_param
|
||||
end
|
||||
end
|
||||
|
||||
class ArrayExtConversionTests < Test::Unit::TestCase
|
||||
def test_plain_array_to_sentence
|
||||
assert_equal "one, two, and three", ['one', 'two', 'three'].to_sentence
|
||||
end
|
||||
|
||||
def test_to_sentence_with_connector
|
||||
assert_equal "one, two, and also three", ['one', 'two', 'three'].to_sentence('and also')
|
||||
end
|
||||
|
||||
def test_one_element
|
||||
assert_equal "one", ['one'].to_sentence
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user