Sha256: bb4aac71e71a1d6a7ae9e2ae0e9d3b458189b7c0978f66327632fa9ce8edb280
Contents?: true
Size: 1.05 KB
Versions: 2
Compression:
Stored size: 1.05 KB
Contents
require 'tilt' module ShtRails class Tilt < Tilt::Template def self.default_mime_type 'application/javascript' end def prepare @namespace = "this.#{ShtRails.template_namespace}" end attr_reader :namespace def evaluate(scope, locals, &block) template_key = path_to_key scope <<-HandlebarsTemplate (function() { #{namespace} || (#{namespace} = {}); #{namespace}CachedShtTemplates || (#{namespace}CachedShtTemplates = {}); #{namespace}CachedShtTemplates[#{template_key.inspect}] = Handlebars.compile(#{data.inspect}); #{namespace}[#{template_key.inspect}] = function(object) { if (object == null){ return #{ShtRails.template_namespace}CachedShtTemplates[#{template_key.inspect}]; } else { return #{ShtRails.template_namespace}CachedShtTemplates[#{template_key.inspect}](object); } }; }).call(this); HandlebarsTemplate end def path_to_key(scope) path = scope.logical_path.to_s.split('/') path.last.gsub!(/^_/, '') path.join('/') end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sht_rails-0.1.1 | lib/sht_rails/tilt.rb |
sht_rails-0.1.0 | lib/sht_rails/tilt.rb |