aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorMichael Koziarski <michael@koziarski.com>2007-12-02 00:28:30 +0000
committerMichael Koziarski <michael@koziarski.com>2007-12-02 00:28:30 +0000
commit67442cb40d0850f42ff66a66e2c2b3f5cf5feb07 (patch)
treea256ff8cd19105da9b86659c1c71cb4b90b5d574 /activesupport
parentc01c28c3047bbf0be2861c7ae1146723cf4ff7a9 (diff)
downloadrails-67442cb40d0850f42ff66a66e2c2b3f5cf5feb07.tar.gz
rails-67442cb40d0850f42ff66a66e2c2b3f5cf5feb07.tar.bz2
rails-67442cb40d0850f42ff66a66e2c2b3f5cf5feb07.zip
Fix potential extra space in Array#to_sentence. Closes #10327 [kamal]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8251 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/core_ext/array/conversions.rb13
-rw-r--r--activesupport/test/core_ext/array_ext_test.rb6
2 files changed, 13 insertions, 6 deletions
diff --git a/activesupport/lib/active_support/core_ext/array/conversions.rb b/activesupport/lib/active_support/core_ext/array/conversions.rb
index 56c7cf1d71..8f72294838 100644
--- a/activesupport/lib/active_support/core_ext/array/conversions.rb
+++ b/activesupport/lib/active_support/core_ext/array/conversions.rb
@@ -10,16 +10,17 @@ module ActiveSupport #:nodoc:
def to_sentence(options = {})
options.assert_valid_keys(:connector, :skip_last_comma)
options.reverse_merge! :connector => 'and', :skip_last_comma => false
-
+ options[:connector] = "#{options[:connector]} " unless options[:connector].nil? || options[:connector].strip == ''
+
case length
- when 0
- ""
+ when 0
+ ""
when 1
self[0]
when 2
- "#{self[0]} #{options[:connector]} #{self[1]}"
+ "#{self[0]} #{options[:connector]}#{self[1]}"
else
- "#{self[0...-1].join(', ')}#{options[:skip_last_comma] ? '' : ','} #{options[:connector]} #{self[-1]}"
+ "#{self[0...-1].join(', ')}#{options[:skip_last_comma] ? '' : ','} #{options[:connector]}#{self[-1]}"
end
end
@@ -47,7 +48,7 @@ module ActiveSupport #:nodoc:
to_default_s
end
end
-
+
def to_xml(options = {})
raise "Not all elements respond to to_xml" unless all? { |e| e.respond_to? :to_xml }
diff --git a/activesupport/test/core_ext/array_ext_test.rb b/activesupport/test/core_ext/array_ext_test.rb
index ade2e95c1b..5831e2a56a 100644
--- a/activesupport/test/core_ext/array_ext_test.rb
+++ b/activesupport/test/core_ext/array_ext_test.rb
@@ -38,6 +38,10 @@ class ArrayExtToSentenceTests < Test::Unit::TestCase
def test_to_sentence_with_connector
assert_equal "one, two, and also three", ['one', 'two', 'three'].to_sentence(:connector => 'and also')
+ assert_equal "one, two, three", ['one', 'two', 'three'].to_sentence(:connector => '')
+ assert_equal "one, two, three", ['one', 'two', 'three'].to_sentence(:connector => nil)
+ assert_equal "one, two, three", ['one', 'two', 'three'].to_sentence(:connector => ' ')
+ assert_equal "one, two, and three", ['one', 'two', 'three'].to_sentence(:connector => 'and ')
end
def test_to_sentence_with_skip_last_comma
@@ -46,11 +50,13 @@ class ArrayExtToSentenceTests < Test::Unit::TestCase
def test_two_elements
assert_equal "one and two", ['one', 'two'].to_sentence
+ assert_equal "one two", ['one', 'two'].to_sentence(:connector => '')
end
def test_one_element
assert_equal "one", ['one'].to_sentence
end
+
end
class ArrayExtToSTests < Test::Unit::TestCase