Sha256: 20881bbda7cccc4efe087744e5e18ec02d53c73dd7a28a459aca48626a29fd48
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
require 'haml' require 'tilt' module HamlAssets class HamlSprocketsEngine < Tilt::Template def self.default_mime_type 'application/javascript' end 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 end end def protect_against_forgery? false end end def evaluate(scope, locals, &block) begin "" + render_haml(view_context(scope), locals) rescue Exception => e Rails.logger.error "ERROR: compiling #{file} RAISED #{e}" Rails.logger.error "Backtrace: #{e.backtrace.join("\n")}" end end protected def context_class(scope) @context_class ||= Class.new(scope.environment.context_class) end def prepare; end def render_haml(context, locals) Haml::Engine.new(data, Haml::Template.options.merge(:escape_attrs => false)).render(context, locals) end # The Sprockets context is shared among all the processors, give haml its # own context def view_context(scope) @view_context ||= context_class(scope).new( scope.environment, scope.logical_path.to_s, scope.pathname).tap { |ctx| ctx.class.send(:include, ViewContext) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
haml_assets-0.0.5 | lib/haml_assets/haml_sprockets_engine.rb |