Sha256: 2a2fc58dc8640c90926b5017644970f4e59ca3771c7bad283fb30e9b10a4e349

Contents?: true

Size: 943 Bytes

Versions: 13

Compression:

Stored size: 943 Bytes

Contents

module Temple
  module ERB
    # ERB trimming
    # Set option :trim_mode to
    #    <> - omit newline for lines starting with <% and ending in %>
    #    >  - omit newline for lines ending in %>
    #
    # @api public
    class Trimming < Filter
      define_options :trim_mode

      def on_multi(*exps)
        case options[:trim_mode]
        when '>'
          i = 0
          while i < exps.size
            exps.delete_at(i + 1) if code?(exps[i]) && exps[i+1] == [:static, "\n"]
            i += 1
          end
        when '<>'
          i = 0
          while i < exps.size
            exps.delete_at(i + 1) if code?(exps[i]) && exps[i+1] == [:static, "\n"] &&
                                     (!exps[i-1] || (exps[i-1] == [:newline]))
            i += 1
          end
        end
        [:multi, *exps]
      end

      protected

      def code?(exp)
        exp[0] == :escape || exp[0] == :code
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
temple-0.7.2 lib/temple/erb/trimming.rb
temple-0.7.1 lib/temple/erb/trimming.rb
temple-0.6.10 lib/temple/erb/trimming.rb
temple-0.6.9 lib/temple/erb/trimming.rb
temple-0.6.8 lib/temple/erb/trimming.rb
temple-0.6.7 lib/temple/erb/trimming.rb
temple-0.6.6 lib/temple/erb/trimming.rb
temple-0.6.5 lib/temple/erb/trimming.rb
temple-0.6.4 lib/temple/erb/trimming.rb
temple-0.6.3 lib/temple/erb/trimming.rb
temple-0.6.0 lib/temple/erb/trimming.rb
temple-0.5.5 lib/temple/erb/trimming.rb
temple-0.5.4 lib/temple/erb/trimming.rb