From 2c950f74bcc96091d6ed60ee8a4c58e96ab3c1fe Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 4 Jun 2013 09:12:11 -0700 Subject: [PATCH] Remove props related to `_.sortBy` if the method isn't included in a given build. Former-commit-id: b3da4dab8257b9001b7458263a28bf22b0a2c831 --- build.js | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/build.js b/build.js index 74c6b5e0a..a7d872634 100755 --- a/build.js +++ b/build.js @@ -1058,8 +1058,8 @@ return source; } // remove data object property assignment - var modified = snippet.replace(RegExp("^(?: *\\/\\/.*\\n)* *data\\." + identifier + " *= *(.+\\n+)", 'm'), function(match, postlude) { - return /\bdata\b/.test(postlude) ? postlude : ''; + var modified = snippet.replace(RegExp("^(?: *\\/\\/.*\\n)* *(\\w+)\\." + identifier + " *= *(.+\\n+)", 'm'), function(match, object, postlude) { + return RegExp('\\b' + object + '\\.').test(postlude) ? postlude : ''; }); source = source.replace(snippet, function() { @@ -1077,23 +1077,31 @@ .replace(/,(?=\s*\))/, ''); }); - return removeFromGetObject(source, identifier); + return removeFromObjectPoolFunctions(source, identifier); } /** - * Removes all references to `identifier` from `getObject` in `source`. + * Removes all references to `identifier` from the `objectPool` functions in `source`. * * @private * @param {String} source The source to process. * @param {String} identifier The name of the property to remove. * @returns {String} Returns the modified source. */ - function removeFromGetObject(source, identifier) { - return source.replace(matchFunction(source, 'getObject'), function(match) { - return match - .replace(RegExp("^(?: *\\/\\/.*\\n)* *'" + identifier + "':.+\\n+", 'm'), '') - .replace(/,(?=\s*})/, ''); + function removeFromObjectPoolFunctions(source, identifier) { + _.each(['getObject', 'releaseObject'], function(methodName) { + source = source.replace(matchFunction(source, methodName), function(match) { + // remove object property assignments + return match + .replace(RegExp("^(?: *\\/\\/.*\\n)* *'" + identifier + "':.+\\n+", 'm'), '') + .replace(/,(?=\s*})/, '') + .replace(RegExp("^(?: *\\/\\/.*\\n)* *(\\w+)\\." + identifier + " *= *(.+\\n+)", 'm'), function(match, object, postlude) { + return RegExp('\\b' + object + '\\.').test(postlude) ? postlude : ''; + }); + }); }); + + return source; } /** @@ -3025,7 +3033,7 @@ source = removeFunction(source, 'createIterator'); iteratorOptions.forEach(function(prop) { - source = removeFromGetObject(source, prop); + source = removeFromObjectPoolFunctions(source, prop); }); // inline all functions defined with `createIterator` @@ -3300,6 +3308,11 @@ source = removeVar(source, 'reLeadingSpacesAndZeros'); source = removeVar(source, 'whitespace'); } + if (isRemoved(source, 'sortBy')) { + source = removeFromObjectPoolFunctions(source, 'criteria'); + source = removeFromObjectPoolFunctions(source, 'index'); + source = removeFromObjectPoolFunctions(source, 'value'); + } if (isRemoved(source, 'template')) { // remove `templateSettings` assignment source = source.replace(/(?:\n +\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\/)?\n *lodash\.templateSettings[\s\S]+?};\n/, '');