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