/* * Paper.js - The Swiss Army Knife of Vector Graphics Scripting. * http://paperjs.org/ * * Copyright (c) 2011 - 2013, Juerg Lehni & Jonathan Puckey * http://lehni.org/ & http://jonathanpuckey.com/ * * Distributed under the MIT license. See LICENSE file for details. * * All rights reserved. */ var fs = require('fs'), vm = require('vm'), path = require('path'), Canvas = require('canvas'); __dirname = path.resolve(__dirname, '../src/'); // Create the context within which we will run the source files: var context = vm.createContext({ options: { server: true, svg: true, parser: 'acorn', version: 'dev' }, fs: fs, // Node Canvas library: https://github.com/learnboost/node-canvas Canvas: Canvas, HTMLCanvasElement: Canvas, Image: Canvas.Image, // Copy over global variables: console: console, require: require, __dirname: __dirname, __filename: __filename, // Used to load and run source files within the same context: include: function(uri) { var source = fs.readFileSync(path.resolve(__dirname, uri), 'utf8'); // For relative includes, we save the current directory and then // add the uri directory to __dirname: var oldDirname = __dirname; __dirname = path.resolve(__dirname, path.dirname(uri)); vm.runInContext(source, context, uri); __dirname = oldDirname; } }); // Load Paper.js library files: context.include('paper.js'); // Export all classes through PaperScope: context.Base.each(context, function(val, key) { if (val && val.prototype instanceof context.Base) context.PaperScope.prototype[key] = val; }); context.PaperScope.prototype['Canvas'] = context.Canvas; require.extensions['.pjs'] = function(module, uri) { var source = context.PaperScript.compile(fs.readFileSync(uri, 'utf8')); var envVars = 'var __dirname = \'' + path.dirname(uri) + '\';' + 'var __filename = \'' + uri + '\';'; vm.runInContext(envVars, context); var scope = new context.PaperScope(); context.PaperScript.evaluate(source, scope); module.exports = scope; }; module.exports = new context.PaperScope();