diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-18 19:22:09 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-18 19:22:09 -0700 |
commit | 1c11fdd98530b6d35e51c0eba14fb1f375d05229 (patch) | |
tree | bd471ce02003d0e1d16dfe773d1ed4d0acdcb499 /tools/js-optimizer.js | |
parent | d6cff2177ec065aa14f228ab547abc29ef37b248 (diff) | |
parent | 327b6f859e95be71e5613f24cc1c9d4f4b97c15f (diff) |
merge
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 213e2257..b51fe22e 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -24,11 +24,14 @@ if (ENVIRONMENT_IS_NODE) { }; var nodeFS = require('fs'); + var nodePath = require('path'); read = function(filename) { + filename = nodePath['normalize'](filename); var ret = nodeFS['readFileSync'](filename).toString(); - if (!ret && filename[0] != '/') { - filename = __dirname.split('/').slice(0, -1).join('/') + '/src/' + filename; + // The path is absolute if the normalized version is the same as the resolved. + if (!ret && filename != nodePath['resolve'](filename)) { + filename = path.join(__dirname, '..', 'src', filename); ret = nodeFS['readFileSync'](filename).toString(); } return ret; @@ -46,9 +49,9 @@ if (ENVIRONMENT_IS_NODE) { this['read'] = function(f) { snarf(f) }; } - if (!this['arguments']) { + if (typeof scriptArgs != 'undefined') { arguments_ = scriptArgs; - } else { + } else if (typeof arguments != 'undefined') { arguments_ = arguments; } @@ -97,12 +100,15 @@ if (typeof print === 'undefined') { // Fix read for our location read = function(filename) { - if (filename[0] != '/') filename = __dirname.split('/').slice(0, -1).join('/') + '/src/' + filename; + // The path is absolute if the normalized version is the same as the resolved. + filename = path.normalize(filename); + if (filename != path.resolve(filename)) filename = path.join(__dirname, '..', 'src', filename); return fs.readFileSync(filename).toString(); } var uglify = require('../tools/eliminator/node_modules/uglify-js'); var fs = require('fs'); +var path = require('path'); // Load some modules @@ -382,7 +388,7 @@ function simplifyExpressionsPre(ast) { function simplifyBitops(ast) { var USEFUL_BINARY_OPS = set('<<', '>>', '|', '&', '^'); - var SAFE_BINARY_OPS = set('+', '-', '*', '/', '%'); + var SAFE_BINARY_OPS = set('+', '-', '*', '%'); // division is unsafe as it creates non-ints in JS var ZERO = ['num', 0]; var rerun = true; while (rerun) { |