Sha256: ead7a46ca39b51421f703871153bdfb23022f84b4478eb93e665980ede864e47

Contents?: true

Size: 1.55 KB

Versions: 10

Compression:

Stored size: 1.55 KB

Contents

require 'barber'
require 'tilt'

require 'string/strip'

class Embork::Sprockets::EmberHandlebarsCompiler < Tilt::Template
  class << self
    attr_accessor :compile_to
    attr_accessor :transform
    attr_accessor :namespace

    CJS_closure = <<-CJS.strip_heredoc
      window.require.define({"%s": function(exports, require, module) {

      "use strict";
      var template = %s

      exports["default"] = template;

      }});
    CJS

    AMD_closure = <<-AMD.strip_heredoc
      define("%s",
        ["exports"],
        function(__exports__) {

      "use strict";
      var template = %s

      __exports__["default"] = template;

      });
    AMD

    def closures(target)
      {
        :globals => "Ember.TEMPLATES['%s'] = %s",
        :cjs => CJS_closure,
        :amd => AMD_closure
      }[target]
    end
  end
  self.namespace = nil
  self.default_mime_type = 'application/javascript'
  self.compile_to = :amd

  def prepare
    # Required to be implemented by Tilt for some reason...
  end

  def evaluate(scope, locals, &block)
    @environment = scope.environment
    @logical_path = scope.logical_path
    template = Barber::Ember::FilePrecompiler.call(data)
    closure = self.class.closures(self.class.compile_to)
    closure % [ module_name, template ]
  end

  def module_name
    if self.class.transform
      name = self.class.transform.call @logical_path
    else
      name = @logical_path
    end

    # Attach the namespace
    if !self.class.namespace.nil?
      "%s/%s" % [ self.class.namespace.to_s, name ]
    else
      name
    end
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
embork-0.0.13 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.12 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.11 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.10 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.9 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.8 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.7 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.6 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.5 lib/embork/sprockets/ember_handlebars_compiler.rb
embork-0.0.4 lib/embork/sprockets/ember_handlebars_compiler.rb