aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/array/conversions.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-09-11 06:14:05 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-09-11 06:14:05 +0000
commitfe4abaa7df98aa736485b6ac863d05d80d2c1d89 (patch)
treeb7149cf54b63e008b667e266ccbe164041a83686 /activesupport/lib/active_support/core_ext/array/conversions.rb
parentb62243a5cc957ae0c7380bf8e020219e45366fe2 (diff)
downloadrails-fe4abaa7df98aa736485b6ac863d05d80d2c1d89.tar.gz
rails-fe4abaa7df98aa736485b6ac863d05d80d2c1d89.tar.bz2
rails-fe4abaa7df98aa736485b6ac863d05d80d2c1d89.zip
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
Diffstat (limited to 'activesupport/lib/active_support/core_ext/array/conversions.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/array/conversions.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/array/conversions.rb b/activesupport/lib/active_support/core_ext/array/conversions.rb
new file mode 100644
index 0000000000..19220da2b1
--- /dev/null
+++ b/activesupport/lib/active_support/core_ext/array/conversions.rb
@@ -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