Class: Hanami::View::ERB::Filters::Trimming Private

Inherits:
Temple::Filter
  • Object
show all
Defined in:
lib/hanami/view/erb/filters/trimming.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.

Trims spurious spaces from ERB-generated text.

Deletes spaces around “<% %>” and leave spaces around “<%= %>”.

This is a copy of Temple::ERB::Trimming, with the one difference being that it descends into the sexp-tree by running ‘compile(e)` for any non-`:static` sexps. This is necessary for our implementation of ERB, because we capture block content by creating additional `:multi` sexps with their own nested content.

Since:

  • 2.1.0

Instance Method Summary collapse

Instance Method Details

#on_multi(*exps) ⇒ 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.

Since:

  • 2.1.0



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/hanami/view/erb/filters/trimming.rb', line 25

def on_multi(*exps)
  exps = exps.each_with_index.map do |e,i|
    if e.first == :static && i > 0 && exps[i-1].first == :code
      [:static, e.last.lstrip]
    elsif e.first == :static && i < exps.size-1 && exps[i+1].first == :code
      [:static, e.last.rstrip]
    else
      compile(e)
    end
  end if options[:trim]

  [:multi, *exps]
end