ehynds / grunt-remove-logging

Grunt.js task for removing console logging statements
MIT License
192 stars 33 forks source link

Fixed issue with logs where message contains semicolon #40

Open baspellis opened 8 years ago

baspellis commented 8 years ago

Log messages that contains a semicolon are not replaced correctly. For example: console.log("Ok;"); or console.log(["Test", "Ok"].map(function(s){return s;})); I've added two unit tests that are failing with the current code.

This PR updates the Regex inner expression to detect the log message from: \([^;]*\) to \((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)

The new expression is based on matching nested brackets. Note that this will only work up to two levels of nesting. To add levels, you could change the middle (second) [^()]* part to ([^()]|([^()]))*, but I believe supporting two levels should be sufficient for most cases.