Make _.runInContext not require a fully populated context object.

Former-commit-id: 11bf3cad2bfd3e922e7701eb7b0f48028f522ba6
This commit is contained in:
John-David Dalton
2013-02-27 00:53:12 -08:00
parent eb8953e784
commit b3c550b7c0
8 changed files with 183 additions and 129 deletions

View File

@@ -151,7 +151,7 @@
'reject': ['filter', 'identity', 'isEqual', 'keys'],
'rest': [],
'result': ['isFunction'],
'runInContext': [],
'runInContext': ['extend'],
'shuffle': ['forEach'],
'size': ['keys'],
'some': ['identity', 'isArray', 'isEqual', 'keys'],
@@ -972,15 +972,16 @@
if (snippet) {
if (funcName == 'runInContext') {
source = source.replace(snippet, function() {
return snippet.replace(/^[\s\S]+?\n( *).+?context *=.+(\n[\s\S]+?\n)\1return lodash[\s\S]+$/, function() {
return arguments[2].replace(/^ {4}/gm, ' ');
});
return snippet
.replace(/^[\s\S]+?function runInContext[\s\S]+?context *= *context.+| *return lodash[\s\S]+$/g, '')
.replace(/^ {4}/gm, ' ');
});
source = source
.replace(/context/g, 'window')
.replace(/(?:\n +\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\/)?\n *var Array *=[\s\S]+?;\n/, '')
.replace(/^ *var lodash *= *runInContext.+\n+/m, '');
.replace(/(return *|= *)_([;)])/g, '$1lodash$2')
.replace(/^ *var _ *=.+\n+/m, '');
}
else {
source = source.replace(snippet, '');