class SourceURL < Tilt::Template self.default_mime_type = 'application/javascript' def self.call(input) filename = input[:filename] source = input[:data] context = input[:environment].context_class.new(input) result = new(filename){source}.render(context) context.metadata.merge(data: result) end def prepare end def evaluate(scope, locals, &block) code = "eval(" code << data.inspect code << " + \"\\n//# sourceURL=#{scope.logical_path}\"" code << ");\n" code end end