Compare commits

...

1 Commits

Author SHA1 Message Date
jdalton
d5f4043617 Bump to v3.1.0. 2015-02-03 08:54:32 -08:00
21 changed files with 74 additions and 37 deletions

View File

@@ -1,4 +1,4 @@
# lodash-es v3.0.1 # lodash-es v3.1.0
The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [ES](https://people.mozilla.org/~jorendorff/es6-draft.html) modules. The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [ES](https://people.mozilla.org/~jorendorff/es6-draft.html) modules.
@@ -6,3 +6,5 @@ Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
```bash ```bash
$ lodash modularize modern exports=es -o ./ $ lodash modularize modern exports=es -o ./
``` ```
See the [package source](https://github.com/lodash/lodash/tree/3.1.0-es) for more details.

View File

@@ -57,14 +57,14 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`, * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,
* `identity`, `includes`, `indexOf`, `isArguments`, `isArray`, `isBoolean`, * `identity`, `includes`, `indexOf`, `isArguments`, `isArray`, `isBoolean`,
* `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`, * `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`,
* `isFunction`, `isMatch` , `isNative`, `isNaN`, `isNull`, `isNumber`, * `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
* `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
* `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`,
* `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`,
* `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`,
* `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`,
* `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, * `startCase`, `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`,
* `unescape`, `uniqueId`, `value`, and `words` * `trunc`, `unescape`, `uniqueId`, `value`, and `words`
* *
* The wrapper function `sample` will return a wrapped value when `n` is provided, * The wrapper function `sample` will return a wrapped value when `n` is provided,
* otherwise an unwrapped value is returned. * otherwise an unwrapped value is returned.

View File

@@ -1,5 +1,5 @@
import baseMatches from '../internal/baseMatches';
import find from './find'; import find from './find';
import matches from '../utility/matches';
/** /**
* Performs a deep comparison between each element in `collection` and the * Performs a deep comparison between each element in `collection` and the
@@ -26,7 +26,7 @@ import matches from '../utility/matches';
* // => 'fred' * // => 'fred'
*/ */
function findWhere(collection, source) { function findWhere(collection, source) {
return find(collection, matches(source)); return find(collection, baseMatches(source));
} }
export default findWhere; export default findWhere;

View File

@@ -1,5 +1,5 @@
import baseProperty from '../internal/baseProperty';
import map from './map'; import map from './map';
import property from '../utility/property';
/** /**
* Gets the value of `key` from all elements in `collection`. * Gets the value of `key` from all elements in `collection`.
@@ -25,7 +25,7 @@ import property from '../utility/property';
* // => [36, 40] (iteration order is not guaranteed) * // => [36, 40] (iteration order is not guaranteed)
*/ */
function pluck(collection, key) { function pluck(collection, key) {
return map(collection, property(key)); return map(collection, baseProperty(key + ''));
} }
export default pluck; export default pluck;

View File

@@ -1,5 +1,5 @@
import baseMatches from '../internal/baseMatches';
import filter from './filter'; import filter from './filter';
import matches from '../utility/matches';
/** /**
* Performs a deep comparison between each element in `collection` and the * Performs a deep comparison between each element in `collection` and the
@@ -29,7 +29,7 @@ import matches from '../utility/matches';
* // => ['barney', 'fred'] * // => ['barney', 'fred']
*/ */
function where(collection, source) { function where(collection, source) {
return filter(collection, matches(source)); return filter(collection, baseMatches(source));
} }
export default where; export default where;

View File

@@ -26,7 +26,7 @@ function baseCallback(func, thisArg, argCount) {
} }
// Handle "_.property" and "_.matches" style callback shorthands. // Handle "_.property" and "_.matches" style callback shorthands.
return type == 'object' return type == 'object'
? baseMatches(func, !argCount) ? baseMatches(func)
: baseProperty(func + ''); : baseProperty(func + '');
} }

View File

@@ -1,4 +1,3 @@
import baseClone from './baseClone';
import baseIsMatch from './baseIsMatch'; import baseIsMatch from './baseIsMatch';
import isStrictComparable from './isStrictComparable'; import isStrictComparable from './isStrictComparable';
import keys from '../object/keys'; import keys from '../object/keys';
@@ -15,10 +14,9 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* *
* @private * @private
* @param {Object} source The object of property values to match. * @param {Object} source The object of property values to match.
* @param {boolean} [isCloned] Specify cloning the source object.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new function.
*/ */
function baseMatches(source, isCloned) { function baseMatches(source) {
var props = keys(source), var props = keys(source),
length = props.length; length = props.length;
@@ -32,9 +30,6 @@ function baseMatches(source, isCloned) {
}; };
} }
} }
if (isCloned) {
source = baseClone(source, true);
}
var values = Array(length), var values = Array(length),
strictCompareFlags = Array(length); strictCompareFlags = Array(length);

View File

@@ -1,6 +1,6 @@
/** /**
* Used as the maximum length of an array-like value. * Used as the maximum length of an array-like value.
* See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength) * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
* for more details. * for more details.
*/ */
var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;

View File

@@ -20,7 +20,7 @@ function isIterateeCall(value, index, object) {
var length = object.length, var length = object.length,
prereq = isLength(length) && isIndex(index, length); prereq = isLength(length) && isIndex(index, length);
} else { } else {
prereq = type == 'string' && index in value; prereq = type == 'string' && index in object;
} }
return prereq && object[index] === value; return prereq && object[index] === value;
} }

View File

@@ -1,6 +1,6 @@
/** /**
* Used as the maximum length of an array-like value. * Used as the maximum length of an array-like value.
* See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength) * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
* for more details. * for more details.
*/ */
var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
@@ -8,6 +8,10 @@ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
/** /**
* Checks if `value` is a valid array-like length. * Checks if `value` is a valid array-like length.
* *
* **Note:** This function is based on ES `ToLength`. See the
* [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
* for more details.
*
* @private * @private
* @param {*} value The value to check. * @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.

View File

@@ -1,6 +1,6 @@
/** /**
* @license * @license
* lodash 3.0.1 (Custom Build) <https://lodash.com/> * lodash 3.1.0 (Custom Build) <https://lodash.com/>
* Build: `lodash modularize modern exports="es" -o ./` * Build: `lodash modularize modern exports="es" -o ./`
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/> * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
* Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE> * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
@@ -23,6 +23,8 @@ import arrayEach from './internal/arrayEach';
import baseCallback from './internal/baseCallback'; import baseCallback from './internal/baseCallback';
import baseForOwn from './internal/baseForOwn'; import baseForOwn from './internal/baseForOwn';
import baseFunctions from './internal/baseFunctions'; import baseFunctions from './internal/baseFunctions';
import baseMatches from './internal/baseMatches';
import baseProperty from './internal/baseProperty';
import isArray from './lang/isArray'; import isArray from './lang/isArray';
import isObject from './lang/isObject'; import isObject from './lang/isObject';
import keys from './object/keys'; import keys from './object/keys';
@@ -30,14 +32,12 @@ import lazyClone from './internal/lazyClone';
import lazyReverse from './internal/lazyReverse'; import lazyReverse from './internal/lazyReverse';
import lazyValue from './internal/lazyValue'; import lazyValue from './internal/lazyValue';
import lodash from './chain/lodash'; import lodash from './chain/lodash';
import matches from './utility/matches';
import _mixin from './utility/mixin'; import _mixin from './utility/mixin';
import property from './utility/property';
import support from './support'; import support from './support';
import thru from './chain/thru'; import thru from './chain/thru';
/** Used as the semantic version number. */ /** Used as the semantic version number. */
var VERSION = '3.0.1'; var VERSION = '3.1.0';
/** Used to indicate the type of lazy iteratees. */ /** Used to indicate the type of lazy iteratees. */
var LAZY_FILTER_FLAG = 0, var LAZY_FILTER_FLAG = 0,
@@ -121,7 +121,7 @@ lodash.keys = keys;
lodash.keysIn = object.keysIn; lodash.keysIn = object.keysIn;
lodash.map = collection.map; lodash.map = collection.map;
lodash.mapValues = object.mapValues; lodash.mapValues = object.mapValues;
lodash.matches = matches; lodash.matches = utility.matches;
lodash.memoize = func.memoize; lodash.memoize = func.memoize;
lodash.merge = object.merge; lodash.merge = object.merge;
lodash.mixin = mixin; lodash.mixin = mixin;
@@ -134,7 +134,7 @@ lodash.partialRight = func.partialRight;
lodash.partition = collection.partition; lodash.partition = collection.partition;
lodash.pick = object.pick; lodash.pick = object.pick;
lodash.pluck = collection.pluck; lodash.pluck = collection.pluck;
lodash.property = property; lodash.property = utility.property;
lodash.propertyOf = utility.propertyOf; lodash.propertyOf = utility.propertyOf;
lodash.pull = array.pull; lodash.pull = array.pull;
lodash.pullAt = array.pullAt; lodash.pullAt = array.pullAt;
@@ -252,6 +252,7 @@ lodash.snakeCase = string.snakeCase;
lodash.some = collection.some; lodash.some = collection.some;
lodash.sortedIndex = array.sortedIndex; lodash.sortedIndex = array.sortedIndex;
lodash.sortedLastIndex = array.sortedLastIndex; lodash.sortedLastIndex = array.sortedLastIndex;
lodash.startCase = string.startCase;
lodash.startsWith = string.startsWith; lodash.startsWith = string.startsWith;
lodash.template = string.template; lodash.template = string.template;
lodash.trim = string.trim; lodash.trim = string.trim;
@@ -376,10 +377,10 @@ arrayEach(['initial', 'rest'], function(methodName, index) {
// Add `LazyWrapper` methods for `_.pluck` and `_.where`. // Add `LazyWrapper` methods for `_.pluck` and `_.where`.
arrayEach(['pluck', 'where'], function(methodName, index) { arrayEach(['pluck', 'where'], function(methodName, index) {
var operationName = index ? 'filter' : 'map', var operationName = index ? 'filter' : 'map',
createCallback = index ? matches : property; createCallback = index ? baseMatches : baseProperty;
LazyWrapper.prototype[methodName] = function(value) { LazyWrapper.prototype[methodName] = function(value) {
return this[operationName](createCallback(value)); return this[operationName](createCallback(index ? value : (value + '')));
}; };
}); });

View File

@@ -1,6 +1,6 @@
{ {
"name": "lodash-es", "name": "lodash-es",
"version": "3.0.1", "version": "3.1.0",
"description": "The modern build of lodash exported as ES modules.", "description": "The modern build of lodash exported as ES modules.",
"homepage": "https://lodash.com/custom-builds", "homepage": "https://lodash.com/custom-builds",
"license": "MIT", "license": "MIT",

View File

@@ -11,6 +11,7 @@ import padRight from './string/padRight';
import parseInt from './string/parseInt'; import parseInt from './string/parseInt';
import repeat from './string/repeat'; import repeat from './string/repeat';
import snakeCase from './string/snakeCase'; import snakeCase from './string/snakeCase';
import startCase from './string/startCase';
import startsWith from './string/startsWith'; import startsWith from './string/startsWith';
import template from './string/template'; import template from './string/template';
import templateSettings from './string/templateSettings'; import templateSettings from './string/templateSettings';
@@ -35,6 +36,7 @@ export default {
'parseInt': parseInt, 'parseInt': parseInt,
'repeat': repeat, 'repeat': repeat,
'snakeCase': snakeCase, 'snakeCase': snakeCase,
'startCase': startCase,
'startsWith': startsWith, 'startsWith': startsWith,
'template': template, 'template': template,
'templateSettings': templateSettings, 'templateSettings': templateSettings,

View File

@@ -22,7 +22,7 @@ import createCompounder from '../internal/createCompounder';
*/ */
var camelCase = createCompounder(function(result, word, index) { var camelCase = createCompounder(function(result, word, index) {
word = word.toLowerCase(); word = word.toLowerCase();
return index ? (result + word.charAt(0).toUpperCase() + word.slice(1)) : word; return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);
}); });
export default camelCase; export default camelCase;

View File

@@ -14,10 +14,10 @@ import createCompounder from '../internal/createCompounder';
* _.snakeCase('Foo Bar'); * _.snakeCase('Foo Bar');
* // => 'foo_bar' * // => 'foo_bar'
* *
* _.snakeCase('--foo-bar'); * _.snakeCase('fooBar');
* // => 'foo_bar' * // => 'foo_bar'
* *
* _.snakeCase('fooBar'); * _.snakeCase('--foo-bar');
* // => 'foo_bar' * // => 'foo_bar'
*/ */
var snakeCase = createCompounder(function(result, word, index) { var snakeCase = createCompounder(function(result, word, index) {

28
string/startCase.js Normal file
View File

@@ -0,0 +1,28 @@
import createCompounder from '../internal/createCompounder';
/**
* Converts `string` to start case.
* See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage)
* for more details.
*
* @static
* @memberOf _
* @category String
* @param {string} [string=''] The string to convert.
* @returns {string} Returns the start cased string.
* @example
*
* _.startCase('--foo-bar');
* // => 'Foo Bar'
*
* _.startCase('fooBar');
* // => 'Foo Bar'
*
* _.startCase('__foo_bar__');
* // => 'Foo Bar'
*/
var startCase = createCompounder(function(result, word, index) {
return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));
});
export default startCase;

View File

@@ -35,7 +35,7 @@ function trim(string, chars, guard) {
if (guard ? isIterateeCall(value, chars, guard) : chars == null) { if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1); return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1);
} }
chars = baseToString(chars); chars = (chars + '');
return string.slice(charsLeftIndex(string, chars), charsRightIndex(string, chars) + 1); return string.slice(charsLeftIndex(string, chars), charsRightIndex(string, chars) + 1);
} }

View File

@@ -30,7 +30,7 @@ function trimLeft(string, chars, guard) {
if (guard ? isIterateeCall(value, chars, guard) : chars == null) { if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
return string.slice(trimmedLeftIndex(string)) return string.slice(trimmedLeftIndex(string))
} }
return string.slice(charsLeftIndex(string, baseToString(chars))); return string.slice(charsLeftIndex(string, (chars + '')));
} }
export default trimLeft; export default trimLeft;

View File

@@ -30,7 +30,7 @@ function trimRight(string, chars, guard) {
if (guard ? isIterateeCall(value, chars, guard) : chars == null) { if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
return string.slice(0, trimmedRightIndex(string) + 1) return string.slice(0, trimmedRightIndex(string) + 1)
} }
return string.slice(0, charsRightIndex(string, baseToString(chars)) + 1); return string.slice(0, charsRightIndex(string, (chars + '')) + 1);
} }
export default trimRight; export default trimRight;

View File

@@ -1,5 +1,7 @@
import baseCallback from '../internal/baseCallback'; import baseCallback from '../internal/baseCallback';
import isIterateeCall from '../internal/isIterateeCall'; import isIterateeCall from '../internal/isIterateeCall';
import isObjectLike from '../internal/isObjectLike';
import matches from './matches';
/** /**
* Creates a function bound to an optional `thisArg`. If `func` is a property * Creates a function bound to an optional `thisArg`. If `func` is a property
@@ -40,7 +42,9 @@ function callback(func, thisArg, guard) {
if (guard && isIterateeCall(func, thisArg, guard)) { if (guard && isIterateeCall(func, thisArg, guard)) {
thisArg = null; thisArg = null;
} }
return baseCallback(func, thisArg); return isObjectLike(func)
? matches(func)
: baseCallback(func, thisArg);
} }
export default callback; export default callback;

View File

@@ -1,3 +1,4 @@
import baseClone from '../internal/baseClone';
import baseMatches from '../internal/baseMatches'; import baseMatches from '../internal/baseMatches';
/** /**
@@ -26,7 +27,7 @@ import baseMatches from '../internal/baseMatches';
* // => { 'user': 'barney', 'age': 36 } * // => { 'user': 'barney', 'age': 36 }
*/ */
function matches(source) { function matches(source) {
return baseMatches(source, true); return baseMatches(baseClone(source, true));
} }
export default matches; export default matches;