aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYehuda Katz <wycats@Yehuda-Katz.local>2009-12-24 22:44:21 -0800
committerYehuda Katz <wycats@Yehuda-Katz.local>2009-12-24 22:44:21 -0800
commit3b1642c23cb433dde3d96f0b70dfdc66d15f6713 (patch)
tree870670be7a48e43dfa0bc5ea27f8e657677d1517
parentf3b072189a6a77717f99e38403392a68f5818a49 (diff)
downloadrails-3b1642c23cb433dde3d96f0b70dfdc66d15f6713.tar.gz
rails-3b1642c23cb433dde3d96f0b70dfdc66d15f6713.tar.bz2
rails-3b1642c23cb433dde3d96f0b70dfdc66d15f6713.zip
Simplify and improve the performance of output_safety
-rw-r--r--activesupport/lib/active_support/core_ext/string/output_safety.rb28
1 files changed, 6 insertions, 22 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 9db563f78b..3e6ab0ebd2 100644
--- a/activesupport/lib/active_support/core_ext/string/output_safety.rb
+++ b/activesupport/lib/active_support/core_ext/string/output_safety.rb
@@ -1,7 +1,6 @@
class String
- def html_safe?
- defined?(@_rails_html_safe) && @_rails_html_safe
- end
+ attr_accessor :_rails_html_safe
+ alias html_safe? _rails_html_safe
def html_safe!
@_rails_html_safe = true
@@ -15,31 +14,16 @@ class String
alias original_plus +
def +(other)
result = original_plus(other)
- if html_safe? && also_html_safe?(other)
- result.html_safe!
- else
- result
- end
+ result._rails_html_safe = html_safe? && other.html_safe?
+ result
end
alias original_concat <<
alias safe_concat <<
def <<(other)
+ @_rails_html_safe = false unless other.html_safe?
result = original_concat(other)
- unless html_safe? && also_html_safe?(other)
- @_rails_html_safe = false
- end
- result
end
- remove_method :concat
- def concat(other)
- self << other
- end
-
- private
- def also_html_safe?(other)
- other.respond_to?(:html_safe?) && other.html_safe?
- end
-
+ alias concat <<
end \ No newline at end of file