aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/array
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/core_ext/array')
-rw-r--r--activesupport/lib/active_support/core_ext/array/access.rb20
-rw-r--r--activesupport/lib/active_support/core_ext/array/conversions.rb11
-rw-r--r--activesupport/lib/active_support/core_ext/array/grouping.rb10
3 files changed, 23 insertions, 18 deletions
diff --git a/activesupport/lib/active_support/core_ext/array/access.rb b/activesupport/lib/active_support/core_ext/array/access.rb
index 4ac95efdc7..779ca40aea 100644
--- a/activesupport/lib/active_support/core_ext/array/access.rb
+++ b/activesupport/lib/active_support/core_ext/array/access.rb
@@ -8,6 +8,7 @@ module ActiveSupport #:nodoc:
# %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
+ # %w().from(0) # => nil
def from(position)
self[position..-1]
end
@@ -17,51 +18,52 @@ module ActiveSupport #:nodoc:
# %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 )
+ # %w().to(0) # => %w()
def to(position)
self[0..position]
end
- # Equal to self[1]
+ # Equals to <tt>self[1]</tt>.
def second
self[1]
end
- # Equal to self[2]
+ # Equals to <tt>self[2]</tt>.
def third
self[2]
end
- # Equal to self[3]
+ # Equals to <tt>self[3]</tt>.
def fourth
self[3]
end
- # Equal to self[4]
+ # Equals to <tt>self[4]</tt>.
def fifth
self[4]
end
- # Equal to self[5]
+ # Equals to <tt>self[5]</tt>.
def sixth
self[5]
end
- # Equal to self[6]
+ # Equals to <tt>self[6]</tt>.
def seventh
self[6]
end
- # Equal to self[7]
+ # Equals to <tt>self[7]</tt>.
def eighth
self[7]
end
- # Equal to self[8]
+ # Equals to <tt>self[8]</tt>.
def ninth
self[8]
end
- # Equal to self[9]
+ # Equals to <tt>self[9]</tt>.
def tenth
self[9]
end
diff --git a/activesupport/lib/active_support/core_ext/array/conversions.rb b/activesupport/lib/active_support/core_ext/array/conversions.rb
index 49ada8f174..e67b719ddb 100644
--- a/activesupport/lib/active_support/core_ext/array/conversions.rb
+++ b/activesupport/lib/active_support/core_ext/array/conversions.rb
@@ -6,10 +6,12 @@ module ActiveSupport #:nodoc:
module Conversions
# Converts the array to a comma-separated sentence where the last element is joined by the connector word. Options:
# * <tt>:connector</tt> - The word used to join the last element in arrays with two or more elements (default: "and")
- # * <tt>:skip_last_comma</tt> - Set to true to return "a, b and c" instead of "a, b, and c".
- def to_sentence(options = {})
- options.assert_valid_keys(:connector, :skip_last_comma)
- options.reverse_merge! :connector => 'and', :skip_last_comma => false
+ # * <tt>:skip_last_comma</tt> - Set to true to return "a, b and c" instead of "a, b, and c".
+ def to_sentence(options = {})
+ options.assert_valid_keys(:connector, :skip_last_comma, :locale)
+
+ default = I18n.translate(:'support.array.sentence_connector', :locale => options[:locale])
+ options.reverse_merge! :connector => default, :skip_last_comma => false
options[:connector] = "#{options[:connector]} " unless options[:connector].nil? || options[:connector].strip == ''
case length
@@ -23,6 +25,7 @@ module ActiveSupport #:nodoc:
"#{self[0...-1].join(', ')}#{options[:skip_last_comma] ? '' : ','} #{options[:connector]}#{self[-1]}"
end
end
+
# Calls <tt>to_param</tt> on all its elements and joins the result with
# slashes. This is used by <tt>url_for</tt> in Action Pack.
diff --git a/activesupport/lib/active_support/core_ext/array/grouping.rb b/activesupport/lib/active_support/core_ext/array/grouping.rb
index df37afb053..dd1484f8fa 100644
--- a/activesupport/lib/active_support/core_ext/array/grouping.rb
+++ b/activesupport/lib/active_support/core_ext/array/grouping.rb
@@ -19,7 +19,7 @@ module ActiveSupport #:nodoc:
# %w(1 2 3).in_groups_of(2, false) {|g| p g}
# ["1", "2"]
# ["3"]
- def in_groups_of(number, fill_with = nil, &block)
+ def in_groups_of(number, fill_with = nil)
if fill_with == false
collection = self
else
@@ -31,7 +31,7 @@ module ActiveSupport #:nodoc:
end
if block_given?
- collection.each_slice(number, &block)
+ collection.each_slice(number) { |slice| yield(slice) }
else
returning [] do |groups|
collection.each_slice(number) { |group| groups << group }
@@ -87,11 +87,11 @@ module ActiveSupport #:nodoc:
#
# [1, 2, 3, 4, 5].split(3) # => [[1, 2], [4, 5]]
# (1..10).to_a.split { |i| i % 3 == 0 } # => [[1, 2], [4, 5], [7, 8], [10]]
- def split(value = nil, &block)
- block ||= Proc.new { |e| e == value }
+ def split(value = nil)
+ using_block = block_given?
inject([[]]) do |results, element|
- if block.call(element)
+ if (using_block && yield(element)) || (value == element)
results << []
else
results.last << element