Module: Haml::Template
- Extended by:
- Template
- Included in:
- Template
- Defined in:
- lib/haml/template.rb,
lib/haml/template/options.rb
Overview
The class that keeps track of the global options for Haml within Rails.
Instance Attribute Summary collapse
-
#options ⇒ {Symbol => Object}
The options hash for Haml when used within Rails.
Instance Method Summary collapse
-
#try_enabling_xss_integration ⇒ Boolean
Enables integration with the Rails 2.2.5+ XSS protection, if it's available and enabled.
Instance Attribute Details
#options ⇒ {Symbol => Object}
The options hash for Haml when used within Rails. See the Haml options documentation.
14 15 16 |
# File 'lib/haml/template/options.rb', line 14
def options
@options
end
|
Instance Method Details
#try_enabling_xss_integration ⇒ Boolean
Enables integration with the Rails 2.2.5+ XSS protection, if it's available and enabled.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/haml/template.rb', line 18
def try_enabling_xss_integration
return false unless (ActionView::Base.respond_to?(:xss_safe?) && ActionView::Base.xss_safe?) ||
# We check for ActiveSupport#on_load here because if we're loading Haml that way, it means:
# A) we're in Rails 3 so XSS support is always on, and
# B) we might be in Rails 3 beta 3 where the load order is broken and xss_safe? is undefined
(defined?(ActiveSupport) && Haml::Util.has?(:public_method, ActiveSupport, :on_load))
Haml::Template.options[:escape_html] = true
Haml::Util.module_eval {def rails_xss_safe?; true; end}
require 'haml/helpers/xss_mods'
Haml::Helpers.send(:include, Haml::Helpers::XssMods)
Haml::Compiler.module_eval do
def precompiled_method_return_value_with_haml_xss
"::Haml::Util.html_safe(#{precompiled_method_return_value_without_haml_xss})"
end
alias_method :precompiled_method_return_value_without_haml_xss, :precompiled_method_return_value
alias_method :precompiled_method_return_value, :precompiled_method_return_value_with_haml_xss
end
true
end
|