Merge pull request #7794 from chrootsu/lodash-set

lodash: _.set changed, _.setWith added
This commit is contained in:
Masahiro Wakame
2016-01-27 23:34:08 +09:00
4 changed files with 260 additions and 58 deletions
+35 -10
View File
@@ -13341,40 +13341,65 @@ declare module _ {
* @param value The value to set.
* @return Returns object.
*/
set<T>(
object: T,
set<TResult>(
object: Object,
path: StringRepresentable|StringRepresentable[],
value: any
): T;
): TResult;
/**
* @see _.set
*/
set<V, T>(
object: T,
set<V, TResult>(
object: Object,
path: StringRepresentable|StringRepresentable[],
value: V
): T;
): TResult;
/**
* @see _.set
*/
set<O, V, TResult>(
object: O,
path: StringRepresentable|StringRepresentable[],
value: V
): TResult;
}
interface LoDashImplicitObjectWrapper<T> {
/**
* @see _.set
*/
set<V>(
set<TResult>(
path: StringRepresentable|StringRepresentable[],
value: any
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.set
*/
set<V, TResult>(
path: StringRepresentable|StringRepresentable[],
value: V
): LoDashImplicitObjectWrapper<T>;
): LoDashImplicitObjectWrapper<TResult>;
}
interface LoDashExplicitObjectWrapper<T> {
/**
* @see _.set
*/
set<V>(
set<TResult>(
path: StringRepresentable|StringRepresentable[],
value: any
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.set
*/
set<V, TResult>(
path: StringRepresentable|StringRepresentable[],
value: V
): LoDashExplicitObjectWrapper<T>;
): LoDashExplicitObjectWrapper<TResult>;
}
//_.transform
+22 -18
View File
@@ -8676,39 +8676,43 @@ module TestPick {
// _.set
module TestSet {
type SampleValue = {a: number; b: string; c: boolean;};
type SampleObject = {a: {}};
type SampleResult = {a: {b: number[]}};
let object: TResult;
let value = {a: 1, b: '', c: true};
let object: SampleObject;
let value: number;
{
let result: TResult;
let result: SampleResult;
result = _.set(object, '', any);
result = _.set(object, ['a', 'b', 1], any);
result = _.set<SampleResult>(object, 'a.b[1]', value);
result = _.set<SampleResult>(object, ['a', 'b', 1], value);
result = _.set<SampleValue>(object, '', value);
result = _.set<SampleValue>(object, ['a', 'b', 1], value);
result = _.set<number, SampleResult>(object, 'a.b[1]', value);
result = _.set<number, SampleResult>(object, ['a', 'b', 1], value);
result = _.set<SampleObject, number, SampleResult>(object, 'a.b[1]', value);
result = _.set<SampleObject, number, SampleResult>(object, ['a', 'b', 1], value);
}
{
let result: _.LoDashImplicitObjectWrapper<TResult>;
let result: _.LoDashImplicitObjectWrapper<SampleResult>;
result = _(object).set('', any);
result = _(object).set(['a', 'b', 1], any);
result = _(object).set<SampleResult>('a.b[1]', value);
result = _(object).set<SampleResult>(['a', 'b', 1], value);
result = _(object).set<SampleValue>('', value);
result = _(object).set<SampleValue>(['a', 'b', 1], value);
result = _(object).set<number, SampleResult>('a.b[1]', value);
result = _(object).set<number, SampleResult>(['a', 'b', 1], value);
}
{
let result: _.LoDashExplicitObjectWrapper<TResult>;
let result: _.LoDashExplicitObjectWrapper<SampleResult>;
result = _(object).chain().set('', any);
result = _(object).chain().set(['a', 'b', 1], any);
result = _(object).chain().set<SampleResult>('a.b[1]', value);
result = _(object).chain().set<SampleResult>(['a', 'b', 1], value);
result = _(object).chain().set<SampleValue>('', value);
result = _(object).chain().set<SampleValue>(['a', 'b', 1], value);
result = _(object).chain().set<number, SampleResult>('a.b[1]', value);
result = _(object).chain().set<number, SampleResult>(['a', 'b', 1], value);
}
}
+79 -18
View File
@@ -8745,39 +8745,100 @@ module TestPickBy {
// _.set
module TestSet {
type SampleValue = {a: number; b: string; c: boolean;};
type SampleObject = {a: {}};
type SampleResult = {a: {b: number[]}};
let object: TResult;
let value = {a: 1, b: '', c: true};
let object: SampleObject;
let value: number;
{
let result: TResult;
let result: SampleResult;
result = _.set(object, '', any);
result = _.set(object, ['a', 'b', 1], any);
result = _.set<SampleResult>(object, 'a.b[1]', value);
result = _.set<SampleResult>(object, ['a', 'b', 1], value);
result = _.set<SampleValue>(object, '', value);
result = _.set<SampleValue>(object, ['a', 'b', 1], value);
result = _.set<number, SampleResult>(object, 'a.b[1]', value);
result = _.set<number, SampleResult>(object, ['a', 'b', 1], value);
result = _.set<SampleObject, number, SampleResult>(object, 'a.b[1]', value);
result = _.set<SampleObject, number, SampleResult>(object, ['a', 'b', 1], value);
}
{
let result: _.LoDashImplicitObjectWrapper<TResult>;
let result: _.LoDashImplicitObjectWrapper<SampleResult>;
result = _(object).set('', any);
result = _(object).set(['a', 'b', 1], any);
result = _(object).set<SampleResult>('a.b[1]', value);
result = _(object).set<SampleResult>(['a', 'b', 1], value);
result = _(object).set<SampleValue>('', value);
result = _(object).set<SampleValue>(['a', 'b', 1], value);
result = _(object).set<number, SampleResult>('a.b[1]', value);
result = _(object).set<number, SampleResult>(['a', 'b', 1], value);
}
{
let result: _.LoDashExplicitObjectWrapper<TResult>;
let result: _.LoDashExplicitObjectWrapper<SampleResult>;
result = _(object).chain().set('', any);
result = _(object).chain().set(['a', 'b', 1], any);
result = _(object).chain().set<SampleResult>('a.b[1]', value);
result = _(object).chain().set<SampleResult>(['a', 'b', 1], value);
result = _(object).chain().set<SampleValue>('', value);
result = _(object).chain().set<SampleValue>(['a', 'b', 1], value);
result = _(object).chain().set<number, SampleResult>('a.b[1]', value);
result = _(object).chain().set<number, SampleResult>(['a', 'b', 1], value);
}
}
// _.setWith
module TestSetWith {
type SampleObject = {a: {}};
type SampleResult = {a: {b: number[]}};
let object: SampleObject;
let value: number;
let customizer: (value: any, key: string, object: SampleObject) => number;
{
let result: SampleResult;
result = _.setWith<SampleResult>(object, 'a.b[1]', value);
result = _.setWith<SampleResult>(object, 'a.b[1]', value, customizer);
result = _.setWith<SampleResult>(object, ['a', 'b', 1], value);
result = _.setWith<SampleResult>(object, ['a', 'b', 1], value, customizer);
result = _.setWith<number, SampleResult>(object, 'a.b[1]', value);
result = _.setWith<number, SampleResult>(object, 'a.b[1]', value, customizer);
result = _.setWith<number, SampleResult>(object, ['a', 'b', 1], value);
result = _.setWith<number, SampleResult>(object, ['a', 'b', 1], value, customizer);
result = _.setWith<SampleObject, number, SampleResult>(object, 'a.b[1]', value);
result = _.setWith<SampleObject, number, SampleResult>(object, 'a.b[1]', value, customizer);
result = _.setWith<SampleObject, number, SampleResult>(object, ['a', 'b', 1], value);
result = _.setWith<SampleObject, number, SampleResult>(object, ['a', 'b', 1], value, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<SampleResult>;
result = _(object).setWith<SampleResult>('a.b[1]', value);
result = _(object).setWith<SampleResult>('a.b[1]', value, customizer);
result = _(object).setWith<SampleResult>(['a', 'b', 1], value);
result = _(object).setWith<SampleResult>(['a', 'b', 1], value, customizer);
result = _(object).setWith<number, SampleResult>('a.b[1]', value);
result = _(object).setWith<number, SampleResult>('a.b[1]', value, customizer);
result = _(object).setWith<number, SampleResult>(['a', 'b', 1], value);
result = _(object).setWith<number, SampleResult>(['a', 'b', 1], value, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<SampleResult>;
result = _(object).chain().setWith<SampleResult>('a.b[1]', value);
result = _(object).chain().setWith<SampleResult>('a.b[1]', value, customizer);
result = _(object).chain().setWith<SampleResult>(['a', 'b', 1], value);
result = _(object).chain().setWith<SampleResult>(['a', 'b', 1], value, customizer);
result = _(object).chain().setWith<number, SampleResult>('a.b[1]', value);
result = _(object).chain().setWith<number, SampleResult>('a.b[1]', value, customizer);
result = _(object).chain().setWith<number, SampleResult>(['a', 'b', 1], value);
result = _(object).chain().setWith<number, SampleResult>(['a', 'b', 1], value, customizer);
}
}
+124 -12
View File
@@ -14578,47 +14578,159 @@ declare module _ {
//_.set
interface LoDashStatic {
/**
* Sets the property value of path on object. If a portion of path does not exist its created.
* Sets the value at path of object. If a portion of path doesnt exist its created. Arrays are created for
* missing index properties while objects are created for all other missing properties. Use _.setWith to
* customize path creation.
*
* @param object The object to augment.
* @param object The object to modify.
* @param path The path of the property to set.
* @param value The value to set.
* @return Returns object.
*/
set<T>(
object: T,
set<TResult>(
object: Object,
path: StringRepresentable|StringRepresentable[],
value: any
): T;
): TResult;
/**
* @see _.set
*/
set<V, T>(
object: T,
set<V, TResult>(
object: Object,
path: StringRepresentable|StringRepresentable[],
value: V
): T;
): TResult;
/**
* @see _.set
*/
set<O, V, TResult>(
object: O,
path: StringRepresentable|StringRepresentable[],
value: V
): TResult;
}
interface LoDashImplicitObjectWrapper<T> {
/**
* @see _.set
*/
set<V>(
set<TResult>(
path: StringRepresentable|StringRepresentable[],
value: any
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.set
*/
set<V, TResult>(
path: StringRepresentable|StringRepresentable[],
value: V
): LoDashImplicitObjectWrapper<T>;
): LoDashImplicitObjectWrapper<TResult>;
}
interface LoDashExplicitObjectWrapper<T> {
/**
* @see _.set
*/
set<V>(
set<TResult>(
path: StringRepresentable|StringRepresentable[],
value: any
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.set
*/
set<V, TResult>(
path: StringRepresentable|StringRepresentable[],
value: V
): LoDashExplicitObjectWrapper<T>;
): LoDashExplicitObjectWrapper<TResult>;
}
//_.setWith
interface SetWithCustomizer<T> {
(nsValue: any, key: string, nsObject: T): any;
}
interface LoDashStatic {
/**
* This method is like _.set except that it accepts customizer which is invoked to produce the objects of
* path. If customizer returns undefined path creation is handled by the method instead. The customizer is
* invoked with three arguments: (nsValue, key, nsObject).
*
* @param object The object to modify.
* @param path The path of the property to set.
* @param value The value to set.
* @parem customizer The function to customize assigned values.
* @return Returns object.
*/
setWith<TResult>(
object: Object,
path: StringRepresentable|StringRepresentable[],
value: any,
customizer?: SetWithCustomizer<Object>
): TResult;
/**
* @see _.setWith
*/
setWith<V, TResult>(
object: Object,
path: StringRepresentable|StringRepresentable[],
value: V,
customizer?: SetWithCustomizer<Object>
): TResult;
/**
* @see _.setWith
*/
setWith<O, V, TResult>(
object: O,
path: StringRepresentable|StringRepresentable[],
value: V,
customizer?: SetWithCustomizer<O>
): TResult;
}
interface LoDashImplicitObjectWrapper<T> {
/**
* @see _.setWith
*/
setWith<TResult>(
path: StringRepresentable|StringRepresentable[],
value: any,
customizer?: SetWithCustomizer<T>
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.setWith
*/
setWith<V, TResult>(
path: StringRepresentable|StringRepresentable[],
value: V,
customizer?: SetWithCustomizer<T>
): LoDashImplicitObjectWrapper<TResult>;
}
interface LoDashExplicitObjectWrapper<T> {
/**
* @see _.setWith
*/
setWith<TResult>(
path: StringRepresentable|StringRepresentable[],
value: any,
customizer?: SetWithCustomizer<T>
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.setWith
*/
setWith<V, TResult>(
path: StringRepresentable|StringRepresentable[],
value: V,
customizer?: SetWithCustomizer<T>
): LoDashExplicitObjectWrapper<TResult>;
}
//_.transform