Sha256: 18abf7b9d54c8510ca651fd68ca75e3e026238ffd5e68d865aca28e6e64fe4ab
Contents?: true
Size: 1.25 KB
Versions: 10
Compression:
Stored size: 1.25 KB
Contents
module MagLove module Tilt class CoffeeTemplate < ::Tilt::Template self.default_mime_type = 'application/javascript' def self.engine_initialized? defined? ::CoffeeScript end def initialize_engine require_template_library 'coffee_script' end def prepare options[:bare] = true end def evaluate(scope, locals, &block) @output = CoffeeScript.compile(@data, options) # handle includes @output.gsub!(/^include\("([^"]+)"\);$/) do |match| path = Regexp.last_match[1] path = "#{path}.coffee" if File.extname(path).empty? include_path = File.absolute_path(path, File.dirname(file)) # check if base path exists unless File.exist?(include_path) include_path = File.absolute_path(path, locals[:base_path]) end if File.exist?(include_path) include_template = ::Tilt.new(include_path) include_template.render(Object.new, locals) else raise "Path not found: #{include_path}" end end @output end def allows_script? false end end end end Tilt.mappings["coffee"] = [MagLove::Tilt::CoffeeTemplate]
Version data entries
10 entries across 10 versions & 1 rubygems