middleman/middleman-core/lib/middleman-core/renderers/coffee_script.rb
2015-05-03 15:38:23 -07:00

43 lines
1.1 KiB
Ruby

# Require gem
require 'coffee_script'
module Middleman
module Renderers
# CoffeeScript Renderer
class CoffeeScript < ::Middleman::Extension
# Setup extension
def initialize(app, options={}, &block)
super
# Tell Tilt to use it as well (for inline scss blocks)
::Tilt.register 'coffee', DebuggingCoffeeScriptTemplate
::Tilt.prefer(DebuggingCoffeeScriptTemplate)
DebuggingCoffeeScriptTemplate.middleman_app = app
end
# A Template for Tilt which outputs debug messages
class DebuggingCoffeeScriptTemplate < ::Tilt::CoffeeScriptTemplate
# Make the current Middleman app accessible to the template
cattr_accessor :middleman_app
# Add exception messaging
# @param [Class] context
# @param [Hash] locals
# @return [String]
def evaluate(context, locals, &block)
return super unless middleman_app.server?
begin
super
rescue ::ExecJS::RuntimeError => e
e.to_s
rescue => e
e.to_s
end
end
end
end
end
end