diff --git a/stripify.js b/stripify.js index 85599d6..6f25e4c 100644 --- a/stripify.js +++ b/stripify.js @@ -6,6 +6,7 @@ module.exports = function (file, opts) { opts = opts || {} opts.replacement = opts.replacement || opts.r || '' + opts.methods = opts.methods || opts.m || consoleApi var data = '' @@ -27,15 +28,15 @@ module.exports = function (file, opts) { function parse (data, opts) { return falafel(data, function (node) { - if (node.type !== 'DebuggerStatement' && (node.type !== 'CallExpression' || (!isConsoleLog(node.callee) && !isConsoleLogProto(node.callee)))) return + if (node.type !== 'DebuggerStatement' && (node.type !== 'CallExpression' || (!isConsoleMethod(node.callee, opts.methods) && !isConsoleMethodProto(node.callee, opts.methods)))) return node.update(opts.replacement) }) } -function isConsoleLogProto (node) { +function isConsoleMethodProto (node, methods) { if (!node) return false if (node.type !== 'MemberExpression') return false - return isProto(node.property) && isConsoleLog(node.object) + return isProto(node.property) && isConsoleMethod(node.object, methods) } var functionProtoMethods = [ 'apply', 'call' ] @@ -44,8 +45,8 @@ function isProto (node) { return node.type === 'Identifier' && (functionProtoMethods.indexOf(node.name) > -1) } -function isConsoleLog (node) { - return isConsole(node) && isLog(node.property) +function isConsoleMethod (node, methods) { + return isConsole(node) && isMethod(node.property, methods) } function isConsole (node) { @@ -54,8 +55,8 @@ function isConsole (node) { return node.object.type === 'Identifier' && node.object.name === 'console' } -var consoleApi = ['assert', 'count', 'debug', 'dir', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'profile', 'profileEnd', 'time', 'timeEnd', 'trace', 'warn', 'table'] - -function isLog (node) { - return node.type === 'Identifier' && (consoleApi.indexOf(node.name) > -1) +function isMethod (node, methods) { + return node.type === 'Identifier' && (methods.indexOf(node.name) > -1) } + +var consoleApi = ['assert', 'count', 'debug', 'dir', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'profile', 'profileEnd', 'time', 'timeEnd', 'trace', 'warn', 'table'] diff --git a/test/expected/methods.js b/test/expected/methods.js new file mode 100644 index 0000000..1d38238 --- /dev/null +++ b/test/expected/methods.js @@ -0,0 +1,17 @@ +console.assert(); +console.count(); +console.debug(); +console.dir(); +console.error(); +console.exception(); +console.group(); +console.groupCollapsed(); +console.groupEnd(); +; +; +console.profile(); +console.profileEnd(); +console.time(); +console.timeEnd(); +console.trace(); +console.warn(); \ No newline at end of file diff --git a/test/fixtures/methods.js b/test/fixtures/methods.js new file mode 100644 index 0000000..3b46147 --- /dev/null +++ b/test/fixtures/methods.js @@ -0,0 +1,17 @@ +console.assert(); +console.count(); +console.debug(); +console.dir(); +console.error(); +console.exception(); +console.group(); +console.groupCollapsed(); +console.groupEnd(); +console.info(); +console.log(); +console.profile(); +console.profileEnd(); +console.time(); +console.timeEnd(); +console.trace(); +console.warn(); \ No newline at end of file diff --git a/test/test.js b/test/test.js index 3534bf4..b214b19 100644 --- a/test/test.js +++ b/test/test.js @@ -6,7 +6,8 @@ var stripify = require('../') var files = fs.readdirSync(path.join(__dirname, 'fixtures')) var testOpts = { - 'replacement.js': {r: '(0)'} + 'replacement.js': {r: '(0)'}, + 'methods.js': {methods: ['log', 'info']} } files.forEach(function (file) { @@ -26,4 +27,4 @@ files.forEach(function (file) { }) })) }) -}) +}) \ No newline at end of file