From 0b82e1cd5b29e348700472cc711020e477d5e81a Mon Sep 17 00:00:00 2001 From: Joao Carlos Date: Tue, 9 Jun 2015 15:14:41 +0300 Subject: [PATCH] Change --mangle-regex to accept a full regex --- README.md | 2 +- bin/uglifyjs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 073a8715..3b99441b 100644 --- a/README.md +++ b/README.md @@ -253,7 +253,7 @@ cover most standard JS and DOM properties defined in various browsers. Pass `--reserve-domprops` to read that in. You can also use a regular expression to define which property names should be -mangled. For example, `--mangle-regex="^_"` will only mangle property names +mangled. For example, `--mangle-regex="/^_/"` will only mangle property names that start with an underscore. When you compress multiple files using this option, in order for them to diff --git a/bin/uglifyjs b/bin/uglifyjs index 9a1323fd..4768f766 100755 --- a/bin/uglifyjs +++ b/bin/uglifyjs @@ -192,6 +192,15 @@ function writeNameCache(key, cache) { return UglifyJS.writeNameCache(ARGS.name_cache, key, cache); } +function extractRegex(str) { + if (/^\/.*\/[a-zA-Z]*$/.test(str)) { + var regex_pos = str.lastIndexOf("/"); + return new RegExp(str.substr(1, regex_pos - 1), str.substr(regex_pos + 1)); + } else { + throw new Error("Invalid regular expression: " + str); + } +} + if (ARGS.quotes === true) { ARGS.quotes = 3; } @@ -218,9 +227,8 @@ if (BEAUTIFY) if (ARGS.comments != null) { if (/^\/.*\/[a-zA-Z]*$/.test(ARGS.comments)) { - var regex_pos = ARGS.comments.lastIndexOf("/"); try { - OUTPUT_OPTIONS.comments = new RegExp(ARGS.comments.substr(1, regex_pos - 1), ARGS.comments.substr(regex_pos + 1)); + OUTPUT_OPTIONS.comments = extractRegex(ARGS.comments); } catch (e) { print_error("ERROR: Invalid --comments: " + e.message); } @@ -379,7 +387,7 @@ async.eachLimit(files, 1, function (file, cb) { var regex; try { - regex = ARGS.mangle_regex ? new RegExp(ARGS.mangle_regex) : null; + regex = ARGS.mangle_regex ? extractRegex(ARGS.mangle_regex) : null; } catch (e) { print_error("ERROR: Invalid --mangle-regex: " + e.message); process.exit(1); -- 2.34.1