require "crush/engine" module Crush module Closure # Engine implementation of Google's Closure Compiler, # using the closure-compiler gem. See: # # https://rubygems.org/gems/closure-compiler class Compiler < Crush::Engine self.default_mime_type = "application/javascript" def self.engine_initialized? !!(defined?(::Closure) && defined?(::Closure::Compiler)) end def initialize_engine require_template_library "closure-compiler" end def prepare @engine = ::Closure::Compiler.new(options) @output = nil end def evaluate(scope, locals, &block) @output ||= @engine.compile(data) end end end end