commonjs-walker
Advanced tools
Comparing version 7.0.3 to 7.1.0
@@ -19,7 +19,18 @@ 'use strict' | ||
parser._lex_js(content, function (err, ast) { | ||
var message | ||
var parsed | ||
if (err) { | ||
parsed = tools.fixes_line_code(err.message) | ||
message = 'Error parsing "' + path + '": ' + parsed.message | ||
if (parsed.line) { | ||
message += '\n\n' + tools.print_code(content, { | ||
line: parsed.line | ||
}) | ||
} | ||
return callback({ | ||
code: 'ERROR_PARSE_JS', | ||
message: 'Error parsing "' + path + '": ' | ||
+ parser._fixes_line_code(err.stack), | ||
message: message, | ||
data: { | ||
@@ -41,6 +52,11 @@ path: path, | ||
} catch(e) { | ||
parsed = tools.fixes_line_code(e.message) | ||
message = 'Error parsing dependencies: ' | ||
+ parsed.message | ||
+ '\n\n' | ||
+ tools.print_code(content, e.loc) | ||
return callback({ | ||
code: 'WRONG_USAGE_REQUIRE', | ||
message: 'Error parsing dependencies: ' | ||
+ parser._fixes_line_code(e.message), | ||
message: message, | ||
data: { | ||
@@ -70,3 +86,3 @@ path: path, | ||
parser._lex_js = function (content, callback) { | ||
content = parser._silly_wrap(content) | ||
content = tools.silly_wrap(content) | ||
@@ -87,16 +103,2 @@ var ast | ||
parser._silly_wrap = function (content) { | ||
return '(function(){\n' // '\n' to prevent '(function(){//a})' | ||
+ content | ||
+ '\n})()' | ||
} | ||
parser._fixes_line_code = function(message) { | ||
return message.replace(/Line\s*(\d+)/i, function (m, g1) { | ||
return 'Line ' + (parseInt(g1) - 1) | ||
}) | ||
} | ||
// Parses AST and returns the dependencies | ||
@@ -152,11 +154,10 @@ parser._parse_dependencies = function (node, dependencies, options) { | ||
var loc = node.callee.loc.start | ||
var loc_text = generate_loc_text(loc) | ||
var check_length = options.check_require_length | ||
if (args.length === 0) { | ||
tools.throw(check_length, loc_text + 'Method `require` accepts one and only one parameter.') | ||
tools.throw(check_length, 'Method `require` accepts one and only one parameter.', loc) | ||
} | ||
if (check_if_length_exceeded && args.length > 1) { | ||
tools.throw(check_length, loc_text + 'Method `require` should not contains more than one parameters') | ||
tools.throw(check_length, 'Method `require` should not contains more than one parameters', loc) | ||
} | ||
@@ -170,3 +171,4 @@ | ||
if (arg1.type !== 'Literal') { | ||
tools.throw(!options.allow_non_literal_require, generate_loc_text(arg1.loc.start) + 'Method `require` only accepts a string literal.' ) | ||
tools.throw(!options.allow_non_literal_require, 'Method `require` only accepts a string literal.', arg1.loc.start) | ||
} else { | ||
@@ -220,6 +222,1 @@ deps_array.push(arg1.value) | ||
} | ||
function generate_loc_text (loc) { | ||
return 'Line ' + loc.line + ': Column ' + loc.column + ': ' | ||
} |
@@ -1,31 +0,82 @@ | ||
'use strict'; | ||
'use strict' | ||
var REGEX_EXT = /\.([a-z0-9]+)$/i; | ||
var code = require('print-code') | ||
var REGEX_EXT = /\.([a-z0-9]+)$/i | ||
// @returns {Boolean} | ||
exports.match_ext = function (path, ext) { | ||
var match = path.match(REGEX_EXT); | ||
var match = path.match(REGEX_EXT) | ||
return match | ||
? match[1] === ext | ||
// if there is no extension | ||
: true; | ||
}; | ||
: true | ||
} | ||
exports.throw = function (enable, message) { | ||
function generate_loc_text (loc) { | ||
return 'Line ' + loc.line + ( | ||
loc.column | ||
? ': Column ' + + loc.column | ||
: '' | ||
) + ': ' | ||
} | ||
exports.throw = function (enable, message, loc) { | ||
// silly wrap | ||
-- loc.line | ||
if (enable) { | ||
throw new Error(message); | ||
var err = new Error(generate_loc_text(loc) + message) | ||
err.loc = loc | ||
throw err | ||
} | ||
}; | ||
} | ||
exports.print_code = function (content, loc) { | ||
var gen = code(content) | ||
.highlight(loc.line) | ||
.slice(Math.max(0, loc.line - 2), loc.line + 2) | ||
if (typeof loc.column === 'number') { | ||
gen.arrow_mark(loc.line, loc.column) | ||
} | ||
return gen.get() | ||
} | ||
// Silly wrap the file content to allow `return` statement | ||
exports.silly_wrap = function (content) { | ||
return '(function(){\n' // '\n' to prevent '(function(){//a})' | ||
+ content | ||
+ '\n})()' | ||
} | ||
exports.fixes_line_code = function(message) { | ||
var line | ||
message = message.replace(/Line\s*(\d+)/i, function (m, g1) { | ||
line = parseInt(g1) - 1 | ||
return 'Line ' + line | ||
}) | ||
return { | ||
message: message, | ||
line: line | ||
} | ||
} | ||
exports.simple_clone = function (object) { | ||
var key; | ||
var obj = {}; | ||
var key | ||
var obj = {} | ||
for (key in object) { | ||
obj[key] = exports._shadow_clone(object[key]); | ||
obj[key] = exports._shadow_clone(object[key]) | ||
} | ||
return obj; | ||
}; | ||
return obj | ||
} | ||
@@ -37,4 +88,4 @@ | ||
F.prototype = object; | ||
return new F; | ||
}; | ||
F.prototype = object | ||
return new F | ||
} |
{ | ||
"name": "commonjs-walker", | ||
"version": "7.0.3", | ||
"version": "7.1.0", | ||
"description": "Analyzer and tree walker for commonjs.", | ||
@@ -41,4 +41,5 @@ "main": "index.js", | ||
"mix2": "^1.0.1", | ||
"print-code": "^1.0.1", | ||
"resolve": "^1.1.6" | ||
} | ||
} |
43168
1246
7
+ Addedprint-code@^1.0.1
+ Addedansi-regex@2.1.1(transitive)
+ Addedansi-styles@2.2.1(transitive)
+ Addedchalk@1.1.3(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedhas-ansi@2.0.0(transitive)
+ Addedmake-array@1.0.5(transitive)
+ Addedprint-code@1.0.2(transitive)
+ Addedset-options@1.0.4(transitive)
+ Addedstrip-ansi@3.0.1(transitive)
+ Addedsupports-color@2.0.0(transitive)