From 77ca887dd12c25ad398b712af2e9ab41f276d6b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Fran=C3=A7a?= Date: Sun, 29 Dec 2019 11:07:46 -0300 Subject: [PATCH] Merge pull request #38117 from nicolasdular/nicolasdular/fix-frozen-strings-in-to-sentence Return unfrozen strings from to_sentence --- activesupport/CHANGELOG.md | 12 ++++++++++++ .../lib/active_support/core_ext/array/conversions.rb | 8 ++++---- .../test/core_ext/array/conversions_test.rb | 7 +++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 1466e369bf..8b63458632 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,15 @@ +* `Array#to_sentence` no longer returns a frozen string. + + Before: + ['one', 'two'].to_sentence.frozen? + # => true + + After: + ['one', 'two'].to_sentence.frozen? + # => false + + *Nicolas Dular* + * Update `ActiveSupport::Messages::Metadata#fresh?` to work for cookies with expiry set when `ActiveSupport.parse_json_times = true`. diff --git a/activesupport/lib/active_support/core_ext/array/conversions.rb b/activesupport/lib/active_support/core_ext/array/conversions.rb index ea688ed2ea..dee78b3b13 100644 --- a/activesupport/lib/active_support/core_ext/array/conversions.rb +++ b/activesupport/lib/active_support/core_ext/array/conversions.rb @@ -74,13 +74,13 @@ def to_sentence(options = {}) case length when 0 - "" + +"" when 1 - "#{self[0]}" + +"#{self[0]}" when 2 - "#{self[0]}#{options[:two_words_connector]}#{self[1]}" + +"#{self[0]}#{options[:two_words_connector]}#{self[1]}" else - "#{self[0...-1].join(options[:words_connector])}#{options[:last_word_connector]}#{self[-1]}" + +"#{self[0...-1].join(options[:words_connector])}#{options[:last_word_connector]}#{self[-1]}" end end diff --git a/activesupport/test/core_ext/array/conversions_test.rb b/activesupport/test/core_ext/array/conversions_test.rb index 0a7c43d421..914702c1b7 100644 --- a/activesupport/test/core_ext/array/conversions_test.rb +++ b/activesupport/test/core_ext/array/conversions_test.rb @@ -68,6 +68,13 @@ def test_always_returns_string assert_instance_of String, [ActiveSupport::SafeBuffer.new("one"), "two"].to_sentence assert_instance_of String, [ActiveSupport::SafeBuffer.new("one"), "two", "three"].to_sentence end + + def test_returns_no_frozen_string + assert_not [].to_sentence.frozen? + assert_not ["one"].to_sentence.frozen? + assert_not ["one", "two"].to_sentence.frozen? + assert_not ["one", "two", "three"].to_sentence.frozen? + end end class ToSTest < ActiveSupport::TestCase -- GitLab