diff options
author | Akira Matsuda <ronnie@dio.jp> | 2012-02-13 17:54:58 +0900 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-20 16:02:44 -0800 |
commit | 71b95bd954edd8e8f09293044d49b34b9120279a (patch) | |
tree | 0c7e052b74acc0a81aad854dfb854715d8ee26fc /activesupport | |
parent | 08b029cd245a304fd204081c1c7f2a96ce32f4c6 (diff) | |
download | rails-71b95bd954edd8e8f09293044d49b34b9120279a.tar.gz rails-71b95bd954edd8e8f09293044d49b34b9120279a.tar.bz2 rails-71b95bd954edd8e8f09293044d49b34b9120279a.zip |
add AS::SafeBuffer#clone_empty
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/core_ext/string/output_safety.rb | 6 | ||||
-rw-r--r-- | activesupport/test/safe_buffer_test.rb | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/string/output_safety.rb b/activesupport/lib/active_support/core_ext/string/output_safety.rb index dd780da157..20c2befc57 100644 --- a/activesupport/lib/active_support/core_ext/string/output_safety.rb +++ b/activesupport/lib/active_support/core_ext/string/output_safety.rb @@ -124,6 +124,12 @@ module ActiveSupport #:nodoc: @dirty = other.dirty? end + def clone_empty + new_safe_buffer = self[0, 0] + new_safe_buffer.instance_variable_set(:@dirty, @dirty) + new_safe_buffer + end + def concat(value) if dirty? || value.html_safe? super(value) diff --git a/activesupport/test/safe_buffer_test.rb b/activesupport/test/safe_buffer_test.rb index bdde5141a9..ff36af5c40 100644 --- a/activesupport/test/safe_buffer_test.rb +++ b/activesupport/test/safe_buffer_test.rb @@ -118,4 +118,13 @@ class SafeBufferTest < ActiveSupport::TestCase assert_not_nil dirty assert !dirty end + + test "clone_empty returns an empty buffer" do + assert_equal '', ActiveSupport::SafeBuffer.new('foo').clone_empty + end + + test "clone_empty keeps the original dirtyness" do + assert @buffer.clone_empty.html_safe? + assert !@buffer.gsub!('', '').clone_empty.html_safe? + end end |