UNPKG

ember-precompile

Version:

Precompile Ember.js templates with a Handlebars-like UI

82 lines (65 loc) 1.96 kB
// // Sets up the context needed to use Ember with Node // var fs = require('fs'); var vm = require('vm'); var HANDLEBARSJS = fs.readFileSync(__dirname + '/../vendor/handlebars-1.3.0.js', 'utf8') var EMBERJS = fs.readFileSync(__dirname + '/../vendor/ember-1.7.0.js', 'utf8') function getBaseSandbox() { //dummy jQuery var jQuery = function () { return jQuery } jQuery.ready = function () { return jQuery } jQuery.inArray = function () { return jQuery } jQuery.jquery = "1.8.1" jQuery.event = { fixHooks: {} } //dummy DOM element var element = { firstChild: function () { return element }, innerHTML: function () { return element }, // needed for canSetNameOnInputs() test setAttribute: function() { return element }, appendChild: function() { return element }, innerHTML: '<input name="foo">', // needed for "movesWhitespace()" test childNodes: [ {nodeValue: 'Test: '}, {nodeValue: ''}, {nodeValue: 'Value'} ] } var sandbox = { // DOM document: { createRange: false, createElement: function () { return element } }, // Console console: console, // jQuery jQuery: jQuery, $: jQuery, // setTimeout is needed by Ember's run loop setTimeout: setTimeout } // window sandbox.window = sandbox; return sandbox; } function getContext(sandboxExtras){ sandbox = getBaseSandbox(); sandboxExtras = sandboxExtras || {}; for (var attrname in sandboxExtras){ sandbox[attrname] = sandboxExtras[attrname]; } // create a context for the vm using the sandbox data var context = vm.createContext(sandbox) // load Handlebars and Ember into the sandbox vm.runInContext(HANDLEBARSJS, context, 'handlebars.js') vm.runInContext(EMBERJS, context, 'ember.js') return context; } module.exports = { getContext: getContext, getBaseSandbox: getBaseSandbox }; // vim: tabstop=8 expandtab shiftwidth=2 softtabstop=2