Sha256: 3e865739346ac494a19f6d500f21155b7d266189babcb4d3224f2fd6814e2c3f

Contents?: true

Size: 788 Bytes

Versions: 7

Compression:

Stored size: 788 Bytes

Contents

module Slim
  # Base class for Temple filters used in Slim
  # @api private
  class Filter < Temple::Filter
    # Dispatch on_slim_*
    temple_dispatch :slim

    def on_slim_control(code, content)
      [:slim, :control, code, compile!(content)]
    end

    def on_slim_output(code, escape, content)
      [:slim, :output, code, escape, compile!(content)]
    end

    def on_slim_tag(name, attrs, closed, content)
      [:slim, :tag, name, compile!(attrs), closed, compile!(content)]
    end

    def on_slim_attrs(*attrs)
      [:slim, :attrs, *attrs.map {|k, v| [k, compile!(v)] }]
    end

    # Generate unique temporary variable name
    #
    # @return [String] Variable name
    def tmp_var(prefix)
      @tmp_var ||= 0
      "_slim#{prefix}#{@tmp_var += 1}"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
slim-0.8.3 lib/slim/filter.rb
slim-0.8.2 lib/slim/filter.rb
slim-0.8.1 lib/slim/filter.rb
slim-0.8.0 lib/slim/filter.rb
slim-0.7.4 lib/slim/filter.rb
slim-0.7.3 lib/slim/filter.rb
slim-0.7.2 lib/slim/filter.rb