class Haml::Options
This class encapsulates all of the configuration options that Haml
understands. Please see the {file:REFERENCE.md#options Haml
Reference} to learn how to set the options.
Attributes
An array of keys that will be used to provide a hash of options to {Haml::Buffer}. @return Hash
An array of valid values for the ‘:format` option. @return Array
The character that should wrap element attributes. This defaults to ‘’‘ (an apostrophe). Characters of this type within the attributes will be escaped (e.g. by replacing them with `'`) if the character is an apostrophe or a quotation mark.
A list of tag names that should be automatically self-closed if they have no content. This can also contain regular expressions that match tag names (or any object which responds to ‘#===`). Defaults to `[’meta’, ‘img’, ‘link’, ‘br’, ‘hr’, ‘input’, ‘area’, ‘param’, ‘col’, ‘base’]‘.
Whether to include CDATA sections around javascript and css blocks when using the ‘:javascript` or `:css` filters.
This option also affects the ‘:sass`, `:scss`, `:less` and `:coffeescript` filters.
Defaults to ‘false` for html, `true` for xhtml. Cannot be changed when using xhtml.
The compiler class to use. Defaults to Haml::Compiler
.
The encoding to use for the HTML output. This can be a string or an ‘Encoding` Object
. Note that Haml
**does not** automatically re-encode Ruby values; any strings coming from outside the application should be converted before being passed into the Haml
template. Defaults to `Encoding.default_internal`; if that’s not set, defaults to the encoding of the Haml
template; if that’s ‘US-ASCII`, defaults to `“UTF-8”`.
Sets whether or not to escape HTML-sensitive characters in attributes. If this is true, all HTML-sensitive characters in attributes are escaped. If it’s set to false, no HTML-sensitive characters in attributes are escaped. If it’s set to ‘:once`, existing HTML escape sequences are preserved, but other HTML-sensitive characters are escaped.
Defaults to ‘true`.
Sets whether or not to escape HTML-sensitive characters in interpolated strings. See also {file:REFERENCE.md#escaping_html Escaping HTML} and {file:REFERENCE.md#unescaping_html Unescaping HTML}.
Defaults to the current value of ‘escape_html`.
Sets whether or not to escape HTML-sensitive characters in script. If this is true, ‘=` behaves like {file:REFERENCE.md#escaping_html `&=`}; otherwise, it behaves like {file:REFERENCE.md#unescaping_html `!=`}. Note that if this is set, `!=` should be used for yielding to subtemplates and rendering partials. See also {file:REFERENCE.md#escaping_html Escaping HTML} and {file:REFERENCE.md#unescaping_html Unescaping HTML}.
Defaults to false.
The name of the Haml
file being parsed. This is only used as information when exceptions are raised. This is automatically assigned when working through ActionView
, so it’s really only useful for the user to assign when dealing with Haml
programatically.
Key is filter name in String and value is Class to use. Defaults to {}.
Determines the output format. The default is ‘:html5`. The other options are `:html4` and `:xhtml`. If the output is set to XHTML, then Haml
automatically generates self-closing tags and wraps the output of the Javascript and CSS-like filters inside CDATA. When the output is set to `:html5` or `:html4`, XML prologs are ignored. In all cases, an appropriate doctype is generated from `!!!`.
If the mime_type
of the template being rendered is ‘text/xml` then a format of `:xhtml` will be used even if the global output format is set to `:html4` or `:html5`.
The line offset of the Haml
template being parsed. This is useful for inline templates, similar to the last argument to ‘Kernel#eval`.
The mime type that the rendered document will be served with. If this is set to ‘text/xml` then the format will be overridden to `:xhtml` even if it has set to `:html4` or `:html5`.
The parser class to use. Defaults to Haml::Parser
.
A list of tag names that should automatically have their newlines preserved using the {Haml::Helpers#preserve} helper. This means that any content given on the same line as the tag will be preserved. For example, ‘%textarea= “FoonBar”` compiles to `<textarea>Foo
Bar</textarea>`. Defaults to `[’textarea’, ‘pre’]‘. See also {file:REFERENCE.md#whitespace_preservation Whitespace Preservation}.
If set to ‘true`, all tags are treated as if both {file:REFERENCE.md#whitespace_removal_and whitespace removal} options were present. Use with caution as this may cause whitespace-related formatting errors.
Defaults to ‘false`.
Whether or not attribute hashes and Ruby scripts designated by ‘=` or `~` should be evaluated. If this is `true`, said scripts are rendered as empty strings.
Defaults to ‘false`.
Enable template tracing. If true, it will add a ‘data-trace’ attribute to each tag generated by Haml
. The value of the attribute will be the source template name and the line number from which the tag was generated, separated by a colon. On Rails applications, the path given will be a relative path as from the views directory. On non-Rails applications, the path will be the full path.
Public Class Methods
Returns a subset of defaults: those that {Haml::Buffer} cares about. @return [{Symbol => Object}] The options hash
# File lib/haml/options.rb, line 30 def buffer_defaults @buffer_defaults ||= buffer_option_keys.inject({}) do |hash, key| hash.merge(key => defaults[key]) end end
The default option values. @return Hash
# File lib/haml/options.rb, line 15 def defaults @defaults ||= Haml::TempleEngine.options.to_hash.merge(encoding: 'UTF-8') end
# File lib/haml/options.rb, line 174 def initialize(values = {}) defaults.each {|k, v| instance_variable_set :"@#{k}", v} values.each {|k, v| send("#{k}=", v) if defaults.has_key?(k) && !v.nil?} yield if block_given? end
# File lib/haml/options.rb, line 36 def wrap(options) if options.is_a?(Options) options else Options.new(options) end end
Public Instance Methods
Retrieve an option value. @param key The value to retrieve.
# File lib/haml/options.rb, line 182 def [](key) send key end
Set an option value. @param key The key to set. @param value The value to set for the key.
# File lib/haml/options.rb, line 189 def []=(key, value) send "#{key}=", value end
# File lib/haml/options.rb, line 221 def attr_wrapper=(value) @attr_wrapper = value || self.class.defaults[:attr_wrapper] end
# File lib/haml/options.rb, line 244 def encoding=(value) return unless value @encoding = value.is_a?(Encoding) ? value.name : value.to_s @encoding = "UTF-8" if @encoding.upcase == "US-ASCII" end
Returns a non-default subset of options: those that {Haml::Buffer} cares about. All of the values here are such that when ‘#inspect` is called on the hash, it can be `Kernel#eval`ed to get the same result back.
See {file:REFERENCE.md#options the Haml
options documentation}.
@return [{Symbol => Object}] The options hash
# File lib/haml/options.rb, line 257 def for_buffer self.class.buffer_option_keys.inject({}) do |hash, key| value = public_send(key) if self.class.buffer_defaults[key] != value hash[key] = value end hash end end
# File lib/haml/options.rb, line 232 def format=(value) unless self.class.valid_formats.include?(value) raise Haml::Error, "Invalid output format #{value.inspect}" end @format = value end
@return [Boolean] Whether or not the format is HTML4.
# File lib/haml/options.rb, line 212 def html4? format == :html4 end
@return [Boolean] Whether or not the format is HTML5.
# File lib/haml/options.rb, line 217 def html5? format == :html5 end
@return [Boolean] Whether or not the format is any flavor of HTML.
# File lib/haml/options.rb, line 207 def html? html4? or html5? end
@return [Boolean] Whether or not the format is XHTML.
# File lib/haml/options.rb, line 202 def xhtml? not html? end
Private Instance Methods
# File lib/haml/options.rb, line 269 def defaults self.class.defaults end