diff --git a/fp/_baseConvert.js b/fp/_baseConvert.js index 714ca18fe..eea400d52 100644 --- a/fp/_baseConvert.js +++ b/fp/_baseConvert.js @@ -115,6 +115,10 @@ function baseConvert(util, name, func, options) { return result; }; + var convertLib = function(options) { + return _.runInContext.convert(options)(); + }; + var createCloner = function(func) { return function(object) { return func({}, object); @@ -230,7 +234,7 @@ function baseConvert(util, name, func, options) { name = mapping.aliasToReal[name] || name; var wrapper = wrappers[name]; - var convert = function(options) { + var convertMethod = function(options) { var newUtil = isLib ? pristine : helpers, newFunc = isLib ? pristine[name] : func, newOptions = assign(assign({}, config), options); @@ -240,7 +244,7 @@ function baseConvert(util, name, func, options) { if (wrapper) { var result = wrapper(func); - result.convert = convert; + result.convert = convertMethod; return result; } var wrapped = func; @@ -293,7 +297,7 @@ function baseConvert(util, name, func, options) { return func.apply(this, arguments); }; } - result.convert = convert; + result.convert = convertMethod; if (mapping.placeholder[name]) { setPlaceholder = true; result.placeholder = func.placeholder = placeholder; @@ -322,10 +326,11 @@ function baseConvert(util, name, func, options) { _[pair[0]] = pair[1]; }); + _.convert = convertLib; if (setPlaceholder) { _.placeholder = placeholder; } - // Wrap the lodash method and its aliases. + // Reassign aliases. each(keys(_), function(key) { each(mapping.realToAlias[key] || [], function(alias) { _[alias] = _[key]; diff --git a/test/test-fp.js b/test/test-fp.js index 6dc10b03b..f66787236 100644 --- a/test/test-fp.js +++ b/test/test-fp.js @@ -274,7 +274,7 @@ /*--------------------------------------------------------------------------*/ - QUnit.module('convert method'); + QUnit.module('convert on methods'); (function() { QUnit.test('should work when given an object', function(assert) { @@ -309,6 +309,41 @@ /*--------------------------------------------------------------------------*/ + QUnit.module('fp.convert'); + + (function() { + QUnit.test('should work when given an object', function(assert) { + assert.expect(3); + + var array = [1, 2, 3, 4], + lodash = fp.convert(allFalseOptions); + + var actual = lodash.remove(array, function(n, index) { + return index % 2 == 0; + }); + + assert.deepEqual(array, [2, 4]); + assert.deepEqual(actual, [1, 3]); + assert.deepEqual(lodash.remove(), []); + }); + + QUnit.test('should extend existing configs', function(assert) { + assert.expect(2); + + var array = [1, 2, 3, 4], + lodash = fp.convert({ 'cap': false }).convert({ 'rearg': false }); + + var actual = lodash.remove(array)(function(n, index) { + return index % 2 == 0; + }); + + assert.deepEqual(array, [1, 2, 3, 4]); + assert.deepEqual(actual, [2, 4]); + }); + }()); + + /*--------------------------------------------------------------------------*/ + QUnit.module('method arity checks'); (function() {