Include Acorn / Esprima only into local PaperScript scope, and locally deactivate AMD.

Closes #255.
This commit is contained in:
Jürg Lehni 2013-07-18 09:49:30 -07:00
parent 85d7237c0f
commit 098f3e84cc
2 changed files with 13 additions and 5 deletions

View file

@ -15,7 +15,7 @@
],
"devDependencies": {
"straps": "~1.1.3",
"acorn": "~0.3.1",
"acorn": "git://github.com/paperjs/acorn#0.3.2",
"esprima": "~1.0.3",
"stats.js": "r11"
}

View file

@ -21,8 +21,16 @@
paper.PaperScope.prototype.PaperScript = new function() {
var Base = paper.Base,
PaperScope = paper.PaperScope,
// Locally turn of exporst for inlined acorn / esprima.
exports = undefined;
// Locally turn of exports and define for inlined acorn / esprima.
// Just declaring the local vars is enough, as they will be undefined.
exports, define,
// The scope into which the library is loaded.
scope = this;
/*#*/ if (options.version == 'dev') {
// As the above inclusion loads code into the global scope during dev,
// set scope to window, so we can find the library.
scope = window;
/*#*/ }
/*#*/ if (options.parser == 'acorn') {
/*#*/ include('../../components/acorn/acorn.min.js', { exports: false });
/*#*/ } else if (options.parser == 'esprima') {
@ -210,9 +218,9 @@ paper.PaperScope.prototype.PaperScript = new function() {
}
// Now do the parsing magic
/*#*/ if (options.parser == 'acorn') {
walkAst(acorn.parse(code, { ranges: true }));
walkAst(scope.acorn.parse(code, { ranges: true }));
/*#*/ } else if (options.parser == 'esprima') {
walkAst(esprima.parse(code, { range: true }));
walkAst(scope.esprima.parse(code, { range: true }));
/*#*/ }
return code;
}