Sha256: 89863ce5d5b57021b6ad5f93a82e242f29f371d820540290d1ac15ef67720aa0

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require 'slim'
require 'tilt'

module SlimAssets
  class SlimSprocketsEngine < Tilt::Template
    self.default_mime_type = 'application/javascript'

    module ViewContext
      attr_accessor :output_buffer

      def self.included(klass)
        klass.instance_eval do
          include Rails.application.routes.url_helpers
          include Rails.application.routes.mounted_helpers
          include ActionView::Helpers
          include SimpleForm::ActionViewExtensions::FormHelper if defined?(SimpleForm)
        end
      end

      def protect_against_forgery?
        false
      end
    end

    def prepare
      # options = @options.merge(:filename => eval_file, :line => line)
      @engine = ::Slim::Engine.new(options)
    end

    def evaluate(scope, locals, &block)
      scope = view_context(scope)

      super
    end

    def precompiled_template(locals)
      @engine.call(data.to_str)
    end

    protected

    def context_class(scope)
      @context_class ||= Class.new(scope.environment.context_class)
    end

    def view_context(scope)
      @view_context ||= scope.tap do |s|
        s.singleton_class.instance_eval { include SlimAssets::SlimSprocketsEngine::ViewContext }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slim_assets-0.0.3 lib/slim_assets/slim_sprockets_engine.rb