Merge pull request #7028 from chrootsu/lodash-sortedLastIndex

lodash: signatures of _.sortedLastIndex have been changed
This commit is contained in:
Masahiro Wakame
2015-12-07 23:43:33 +09:00
2 changed files with 280 additions and 60 deletions

View File

@@ -1315,17 +1315,86 @@ module TestSortedIndex {
// _.sortedLastIndex
module TestSortedLastIndex {
result = <number>_.sortedLastIndex([20, 30, 50], 40);
result = <number>_.sortedLastIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
var sortedLastIndexDict: { wordToNumber: { [idx: string]: number } } = {
'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 }
};
result = <number>_.sortedLastIndex(['twenty', 'thirty', 'fifty'], 'fourty', function (word: string) {
return sortedLastIndexDict.wordToNumber[word];
});
result = <number>_.sortedLastIndex(['twenty', 'thirty', 'fifty'], 'fourty', function (word: string) {
return this.wordToNumber[word];
}, sortedLastIndexDict);
type SampleType = {a: number; b: string; c: boolean;};
let array: SampleType[];
let list: _.List<SampleType>;
let value: SampleType;
let stringIterator: (x: string) => number;
let arrayIterator: (x: SampleType) => number;
let listIterator: (x: SampleType) => number;
{
let result: number;
result = _.sortedLastIndex<string>('', '');
result = _.sortedLastIndex<string>('', '', stringIterator);
result = _.sortedLastIndex<string>('', '', stringIterator, any);
result = _.sortedLastIndex<string, number>('', '', stringIterator);
result = _.sortedLastIndex<string, number>('', '', stringIterator, any);
result = _.sortedLastIndex<SampleType>(array, value);
result = _.sortedLastIndex<SampleType>(array, value, arrayIterator);
result = _.sortedLastIndex<SampleType>(array, value, arrayIterator, any);
result = _.sortedLastIndex<SampleType>(array, value, '');
result = _.sortedLastIndex<SampleType>(array, value, {a: 42});
result = _.sortedLastIndex<SampleType, number>(array, value, arrayIterator);
result = _.sortedLastIndex<SampleType, number>(array, value, arrayIterator, any);
result = _.sortedLastIndex<{a: number}, SampleType>(array, value, {a: 42});
result = _.sortedLastIndex<SampleType>(list, value);
result = _.sortedLastIndex<SampleType>(list, value, listIterator);
result = _.sortedLastIndex<SampleType>(list, value, listIterator, any);
result = _.sortedLastIndex<SampleType>(list, value, '');
result = _.sortedLastIndex<SampleType>(list, value, {a: 42});
result = _.sortedLastIndex<SampleType, number>(list, value, listIterator);
result = _.sortedLastIndex<SampleType, number>(list, value, listIterator, any);
result = _.sortedLastIndex<{a: number}, SampleType>(list, value, {a: 42});
result = _('').sortedLastIndex('');
result = _('').sortedLastIndex<number>('', stringIterator);
result = _('').sortedLastIndex<number>('', stringIterator, any);
result = _(array).sortedLastIndex(value);
result = _(array).sortedLastIndex<number>(value, arrayIterator);
result = _(array).sortedLastIndex<number>(value, arrayIterator, any);
result = _(array).sortedLastIndex(value, '');
result = _(array).sortedLastIndex<{a: number}>(value, {a: 42});
result = _(list).sortedLastIndex<SampleType>(value);
result = _(list).sortedLastIndex<SampleType>(value, listIterator);
result = _(list).sortedLastIndex<SampleType>(value, listIterator, any);
result = _(list).sortedLastIndex<SampleType>(value, '');
result = _(list).sortedLastIndex<SampleType>(value, {a: 42});
result = _(list).sortedLastIndex<SampleType, number>(value, listIterator);
result = _(list).sortedLastIndex<SampleType, number>(value, listIterator, any);
result = _(list).sortedLastIndex<{a: number}, SampleType>(value, {a: 42});
}
{
let result: _.LoDashExplicitWrapper<number>;
result = _('').chain().sortedLastIndex('');
result = _('').chain().sortedLastIndex<number>('', stringIterator);
result = _('').chain().sortedLastIndex<number>('', stringIterator, any);
result = _(array).chain().sortedLastIndex(value);
result = _(array).chain().sortedLastIndex<number>(value, arrayIterator);
result = _(array).chain().sortedLastIndex<number>(value, arrayIterator, any);
result = _(array).chain().sortedLastIndex(value, '');
result = _(array).chain().sortedLastIndex<{a: number}>(value, {a: 42});
result = _(list).chain().sortedLastIndex<SampleType>(value);
result = _(list).chain().sortedLastIndex<SampleType>(value, listIterator);
result = _(list).chain().sortedLastIndex<SampleType>(value, listIterator, any);
result = _(list).chain().sortedLastIndex<SampleType>(value, '');
result = _(list).chain().sortedLastIndex<SampleType>(value, {a: 42});
result = _(list).chain().sortedLastIndex<SampleType, number>(value, listIterator);
result = _(list).chain().sortedLastIndex<SampleType, number>(value, listIterator, any);
result = _(list).chain().sortedLastIndex<{a: number}, SampleType>(value, {a: 42});
}
}
// _.tail

249
lodash/lodash.d.ts vendored
View File

@@ -2156,71 +2156,222 @@ declare module _ {
//_.sortedLastIndex
interface LoDashStatic {
/**
* Uses a binary search to determine the highest index at which a value should be inserted
* into a given sorted array in order to maintain the sort order of the array. If a callback
* is provided it will be executed for value and each element of array to compute their sort
* ranking. The callback is bound to thisArg and invoked with one argument; (value).
*
* If a property name is provided for callback the created "_.pluck" style callback will
* return the property value of the given element.
*
* If an object is provided for callback the created "_.where" style callback will return
* true for elements that have the properties of the given object, else false.
* @param array The sorted list.
* @param value The value to determine its index within `list`.
* @param callback Iterator to compute the sort ranking of each value, optional.
* @return The index at which value should be inserted into array.
**/
sortedLastIndex<T, TSort>(
array: Array<T>,
value: T,
callback?: (x: T) => TSort,
thisArg?: any): number;
/**
* @see _.sortedLastIndex
**/
* This method is like _.sortedIndex except that it returns the highest index at which value should be
* inserted into array in order to maintain its sort order.
*
* @param array The sorted array to inspect.
* @param value The value to evaluate.
* @param iteratee The function invoked per iteration.
* @param thisArg The this binding of iteratee.
* @return Returns the index at which value should be inserted into array.
*/
sortedLastIndex<T, TSort>(
array: List<T>,
value: T,
callback?: (x: T) => TSort,
thisArg?: any): number;
iteratee?: (x: T) => TSort,
thisArg?: any
): number;
/**
* @see _.sortedLastIndex
* @param pluckValue the _.pluck style callback
**/
sortedLastIndex<T>(
array: Array<T>,
value: T,
pluckValue: string): number;
/**
* @see _.sortedLastIndex
* @param pluckValue the _.pluck style callback
**/
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
array: List<T>,
value: T,
pluckValue: string): number;
iteratee?: (x: T) => any,
thisArg?: any
): number;
/**
* @see _.sortedLastIndex
* @param pluckValue the _.where style callback
**/
sortedLastIndex<W, T>(
array: Array<T>,
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
array: List<T>,
value: T,
whereValue: W): number;
iteratee: string
): number;
/**
* @see _.sortedLastIndex
* @param pluckValue the _.where style callback
**/
* @see _.sortedLastIndex
*/
sortedLastIndex<W, T>(
array: List<T>,
value: T,
whereValue: W): number;
iteratee: W
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
array: List<T>,
value: T,
iteratee: Object
): number;
}
interface LoDashImplicitWrapper<T> {
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<TSort>(
value: string,
iteratee?: (x: string) => TSort,
thisArg?: any
): number;
}
interface LoDashImplicitArrayWrapper<T> {
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<TSort>(
value: T,
iteratee?: (x: T) => TSort,
thisArg?: any
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex(
value: T,
iteratee: string
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<W>(
value: T,
iteratee: W
): number;
}
interface LoDashImplicitObjectWrapper<T> {
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T, TSort>(
value: T,
iteratee?: (x: T) => TSort,
thisArg?: any
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
value: T,
iteratee?: (x: T) => any,
thisArg?: any
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
value: T,
iteratee: string
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<W, T>(
value: T,
iteratee: W
): number;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
value: T,
iteratee: Object
): number;
}
interface LoDashExplicitWrapper<T> {
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<TSort>(
value: string,
iteratee?: (x: string) => TSort,
thisArg?: any
): LoDashExplicitWrapper<number>;
}
interface LoDashExplicitArrayWrapper<T> {
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<TSort>(
value: T,
iteratee?: (x: T) => TSort,
thisArg?: any
): LoDashExplicitWrapper<number>;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex(
value: T,
iteratee: string
): LoDashExplicitWrapper<number>;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<W>(
value: T,
iteratee: W
): LoDashExplicitWrapper<number>;
}
interface LoDashExplicitObjectWrapper<T> {
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T, TSort>(
value: T,
iteratee?: (x: T) => TSort,
thisArg?: any
): LoDashExplicitWrapper<number>;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
value: T,
iteratee?: (x: T) => any,
thisArg?: any
): LoDashExplicitWrapper<number>;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
value: T,
iteratee: string
): LoDashExplicitWrapper<number>;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<W, T>(
value: T,
iteratee: W
): LoDashExplicitWrapper<number>;
/**
* @see _.sortedLastIndex
*/
sortedLastIndex<T>(
value: T,
iteratee: Object
): LoDashExplicitWrapper<number>;
}
//_.tail