Sha256: c8fcced1a62f8d4cc6ab9414fda3bf22d34f23583bc582f2f62b758f51928980
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
require "tilt/template" require "execjs" require 'sprockets' module Templebars module Rails # Tilt template renderer for precompiling Handlebars templates and storing # them in a global Templates object. class HandlebarsTemplate < ::Tilt::Template def self.default_mime_type "application/javascript" end def initialize_engine; end def prepare; end def evaluate( scope, locals, &block ) global = Templebars::Rails::GLOBAL setup_global = "('undefined' == typeof #{global}) && (#{global} = {})" name = scope.logical_path.sub( /^templates\//, "" ) precompiled_js = precompile( data ) template_declaration = "#{global}[\"#{name}\"] = Handlebars.template(#{precompiled_js});" "#{setup_global}\n#{template_declaration}\n" end protected def precompile( template ) runtime.call( "Handlebars.precompile", template, { data: {} } ) end def runtime @runtime ||= ExecJS.compile( handlebars_js ) end def handlebars_js path = File.join( File.dirname(__FILE__), "..", "..", "..", "vendor", "assets", "javascripts", "handlebars.js" ) File.read( path ) end end Sprockets.register_engine '.handlebars', HandlebarsTemplate Sprockets.register_engine '.hbs', HandlebarsTemplate Sprockets.register_engine '.hb', HandlebarsTemplate end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
templebars-0.0.6 | lib/templebars/rails/templates.rb |
templebars-0.0.5 | lib/templebars/rails/templates.rb |