Class: Hanami::View::HTMLSafeStringBuffer Private

Inherits:
Temple::Generators::StringBuffer
  • Object
show all
Defined in:
lib/hanami/view/html_safe_string_buffer.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Specialized Temple buffer class that marks block-captured strings as HTML safe.

This is important for any scope or part methods that receive a string from a yielded block and then determine whether to escape that string based on its .html_safe? value.

In this case, since blocks captured templates intentionally contain HTML (this is the purpose of the template after all), it makes sense to mark the entire captured block string as HTML safe.

This is compatible with escaping of values interpolated into the template, since those will have already been automatically escaped by the template engine when they are evaluated, before the overall block is captured.

This filter is included in all three of our supported HTML template engines (ERB, Haml and Slim) to provide consistent behavior across all.

See Also:

  • ERB::Engine
  • Hanami::View::HamlAdapter::Template
  • SlimAdapter::Template

Since:

  • 2.1.0

Instance Method Summary collapse

Instance Method Details

#call(exp) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Replace Temple::Generator::ArrayBuffer#call (which is used via the superclass of StringBuffer) with the standard implementation from the base Temple::Generator.

This avoids certain specialisations in ArrayBuffer#call that prevent #return_buffer from being called. For our needs, #return_buffer must be called at all times in order to ensure the captured string is consistently marked as .html_safe.

Since:

  • 2.1.0



36
37
38
# File 'lib/hanami/view/html_safe_string_buffer.rb', line 36

def call(exp)
  [preamble, compile(exp), postamble].flatten.compact.join('; ')
end

#return_bufferObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Marks the string returned from the captured buffer as HTML safe.

Since:

  • 2.1.0



41
42
43
# File 'lib/hanami/view/html_safe_string_buffer.rb', line 41

def return_buffer
  "#{buffer}.html_safe"
end