Sha256: c9a61ec87a75bacdd6dd5dfb460d8bdf2b07c51d1467b1abebb12c26368be448

Contents?: true

Size: 1.44 KB

Versions: 13

Compression:

Stored size: 1.44 KB

Contents

# Fake filters for Slim
module Slim
  class Embedded
    class TiltEngine
      alias_method :on_slim_embedded, :on_slim_embedded # silence redefined method warning
      def on_slim_embedded(engine, body, attrs)
        # Override this method to avoid Slim trying to load sass/scss and failing
        case engine
        when :sass, :scss, :coffee
          tilt_engine = nil # Doesn't really matter, ignored below
        else
          # Original Slim code
          tilt_engine = Tilt[engine] || raise(Temple::FilterError, "Tilt engine #{engine} is not available.")
        end

        tilt_options = options[engine.to_sym] || {}
        tilt_options[:default_encoding] ||= 'utf-8'

        [:multi, tilt_render(tilt_engine, tilt_options, collect_text(body)), collect_newlines(body)]
      end
    end

    class SassEngine
      protected

      alias_method :tilt_render, :tilt_render # silence redefined method warning
      def tilt_render(tilt_engine, tilt_options, text)
        [:dynamic,
         "BrakemanFilter.render(#{text.inspect}, #{self.class})"]
      end
    end

    class CoffeeEngine < TiltEngine
      protected

      def tilt_render(tilt_engine, tilt_options, text)
        [:dynamic,
         "BrakemanFilter.render(#{text.inspect}, #{self.class})"]
      end
    end

    # Override the engine for CoffeeScript, because Slim doesn't have
    # one, it just uses Tilt's
    register :coffee, JavaScriptEngine, engine: CoffeeEngine
  end
end

Version data entries

13 entries across 13 versions & 3 rubygems

Version Path
brakeman-7.0.0 lib/brakeman/parsers/slim_embedded.rb
brakeman-lib-7.0.0 lib/brakeman/parsers/slim_embedded.rb
brakeman-min-7.0.0 lib/brakeman/parsers/slim_embedded.rb
brakeman-6.2.2 lib/brakeman/parsers/slim_embedded.rb
brakeman-lib-6.2.2 lib/brakeman/parsers/slim_embedded.rb
brakeman-min-6.2.2 lib/brakeman/parsers/slim_embedded.rb
brakeman-6.2.2.rc1 lib/brakeman/parsers/slim_embedded.rb
brakeman-min-6.2.1 lib/brakeman/parsers/slim_embedded.rb
brakeman-lib-6.2.1 lib/brakeman/parsers/slim_embedded.rb
brakeman-6.2.1 lib/brakeman/parsers/slim_embedded.rb
brakeman-6.2.0 lib/brakeman/parsers/slim_embedded.rb
brakeman-lib-6.2.0 lib/brakeman/parsers/slim_embedded.rb
brakeman-min-6.2.0 lib/brakeman/parsers/slim_embedded.rb