99import { NO_CHANGE , bind , peekBinding } from './instructions' ;
1010
1111/**
12- * If the object or array has changed, returns a copy with the updated expression.
13- * Or if the expression hasn't changed, returns NO_CHANGE.
12+ * If the value of the provided exp has changed, calls the pure function to
13+ * return an updated value. Or if the value has not changed, returns NO_CHANGE.
1414 *
15- * @param factoryFn Function that returns an updated instance of the object/array
15+ * @param pureFn Function that returns an updated value
1616 * @param exp Updated expression value
17- * @returns A copy of the object/array or NO_CHANGE
17+ * @returns Updated value or NO_CHANGE
1818 */
19- export function objectLiteral1 ( factoryFn : ( v : any ) => any , exp : any ) : any {
19+ export function pureFunction1 ( pureFn : ( v : any ) => any , exp : any ) : any {
2020 let different = false ;
2121 const latestValue = exp === NO_CHANGE ? peekBinding ( ) : exp ;
2222 if ( bind ( exp ) !== NO_CHANGE ) different = true ;
2323
24- return different ? factoryFn ( latestValue ) : NO_CHANGE ;
24+ return different ? pureFn ( latestValue ) : NO_CHANGE ;
2525}
2626
2727/**
28- * If the object or array has changed, returns a copy with all updated expressions.
29- * Or if no expressions have changed, returns NO_CHANGE.
28+ * If the value of any provided exp has changed, calls the pure function to
29+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
3030 *
31- * @param factoryFn
31+ * @param pureFn
3232 * @param exp1
3333 * @param exp2
34- * @returns A copy of the object/array or NO_CHANGE
34+ * @returns Updated value or NO_CHANGE
3535 */
36- export function objectLiteral2 ( factoryFn : ( v1 : any , v2 : any ) => any , exp1 : any , exp2 : any ) : any {
36+ export function pureFunction2 ( pureFn : ( v1 : any , v2 : any ) => any , exp1 : any , exp2 : any ) : any {
3737 let different = false ;
3838
3939 const latestVal1 = exp1 === NO_CHANGE ? peekBinding ( ) : exp1 ;
@@ -42,21 +42,21 @@ export function objectLiteral2(factoryFn: (v1: any, v2: any) => any, exp1: any,
4242 const latestVal2 = exp2 === NO_CHANGE ? peekBinding ( ) : exp2 ;
4343 if ( bind ( exp2 ) !== NO_CHANGE ) different = true ;
4444
45- return different ? factoryFn ( latestVal1 , latestVal2 ) : NO_CHANGE ;
45+ return different ? pureFn ( latestVal1 , latestVal2 ) : NO_CHANGE ;
4646}
4747
4848/**
49- * If the object or array has changed, returns a copy with all updated expressions.
50- * Or if no expressions have changed, returns NO_CHANGE.
49+ * If the value of any provided exp has changed, calls the pure function to
50+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
5151 *
52- * @param factoryFn
52+ * @param pureFn
5353 * @param exp1
5454 * @param exp2
5555 * @param exp3
56- * @returns A copy of the object/array or NO_CHANGE
56+ * @returns Updated value or NO_CHANGE
5757 */
58- export function objectLiteral3 (
59- factoryFn : ( v1 : any , v2 : any , v3 : any ) => any , exp1 : any , exp2 : any , exp3 : any ) : any {
58+ export function pureFunction3 (
59+ pureFn : ( v1 : any , v2 : any , v3 : any ) => any , exp1 : any , exp2 : any , exp3 : any ) : any {
6060 let different = false ;
6161
6262 const latestVal1 = exp1 === NO_CHANGE ? peekBinding ( ) : exp1 ;
@@ -68,22 +68,22 @@ export function objectLiteral3(
6868 const latestVal3 = exp3 === NO_CHANGE ? peekBinding ( ) : exp3 ;
6969 if ( bind ( exp3 ) !== NO_CHANGE ) different = true ;
7070
71- return different ? factoryFn ( latestVal1 , latestVal2 , latestVal3 ) : NO_CHANGE ;
71+ return different ? pureFn ( latestVal1 , latestVal2 , latestVal3 ) : NO_CHANGE ;
7272}
7373
7474/**
75- * If the object or array has changed, returns a copy with all updated expressions.
76- * Or if no expressions have changed, returns NO_CHANGE.
75+ * If the value of any provided exp has changed, calls the pure function to
76+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
7777 *
78- * @param factoryFn
78+ * @param pureFn
7979 * @param exp1
8080 * @param exp2
8181 * @param exp3
8282 * @param exp4
83- * @returns A copy of the object/array or NO_CHANGE
83+ * @returns Updated value or NO_CHANGE
8484 */
85- export function objectLiteral4 (
86- factoryFn : ( v1 : any , v2 : any , v3 : any , v4 : any ) => any , exp1 : any , exp2 : any , exp3 : any ,
85+ export function pureFunction4 (
86+ pureFn : ( v1 : any , v2 : any , v3 : any , v4 : any ) => any , exp1 : any , exp2 : any , exp3 : any ,
8787 exp4 : any ) : any {
8888 let different = false ;
8989
@@ -99,24 +99,24 @@ export function objectLiteral4(
9999 const latestVal4 = exp4 === NO_CHANGE ? peekBinding ( ) : exp4 ;
100100 if ( bind ( exp4 ) !== NO_CHANGE ) different = true ;
101101
102- return different ? factoryFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 ) : NO_CHANGE ;
102+ return different ? pureFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 ) : NO_CHANGE ;
103103}
104104
105105/**
106- * If the object or array has changed, returns a copy with all updated expressions.
107- * Or if no expressions have changed, returns NO_CHANGE.
106+ * If the value of any provided exp has changed, calls the pure function to
107+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
108108 *
109- * @param factoryFn
109+ * @param pureFn
110110 * @param exp1
111111 * @param exp2
112112 * @param exp3
113113 * @param exp4
114114 * @param exp5
115- * @returns A copy of the object/array or NO_CHANGE
115+ * @returns Updated value or NO_CHANGE
116116 */
117- export function objectLiteral5 (
118- factoryFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any ) => any , exp1 : any , exp2 : any ,
119- exp3 : any , exp4 : any , exp5 : any ) : any {
117+ export function pureFunction5 (
118+ pureFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any ) => any , exp1 : any , exp2 : any , exp3 : any ,
119+ exp4 : any , exp5 : any ) : any {
120120 let different = false ;
121121
122122 const latestVal1 = exp1 === NO_CHANGE ? peekBinding ( ) : exp1 ;
@@ -134,25 +134,24 @@ export function objectLiteral5(
134134 const latestVal5 = exp5 === NO_CHANGE ? peekBinding ( ) : exp5 ;
135135 if ( bind ( exp5 ) !== NO_CHANGE ) different = true ;
136136
137- return different ? factoryFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 ) :
138- NO_CHANGE ;
137+ return different ? pureFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 ) : NO_CHANGE ;
139138}
140139
141140/**
142- * If the object or array has changed, returns a copy with all updated expressions.
143- * Or if no expressions have changed, returns NO_CHANGE.
141+ * If the value of any provided exp has changed, calls the pure function to
142+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
144143 *
145- * @param factoryFn
144+ * @param pureFn
146145 * @param exp1
147146 * @param exp2
148147 * @param exp3
149148 * @param exp4
150149 * @param exp5
151150 * @param exp6
152- * @returns A copy of the object/array or NO_CHANGE
151+ * @returns Updated value or NO_CHANGE
153152 */
154- export function objectLiteral6 (
155- factoryFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any , v6 : any ) => any , exp1 : any , exp2 : any ,
153+ export function pureFunction6 (
154+ pureFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any , v6 : any ) => any , exp1 : any , exp2 : any ,
156155 exp3 : any , exp4 : any , exp5 : any , exp6 : any ) : any {
157156 let different = false ;
158157
@@ -175,26 +174,26 @@ export function objectLiteral6(
175174 if ( bind ( exp6 ) !== NO_CHANGE ) different = true ;
176175
177176 return different ?
178- factoryFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 , latestVal6 ) :
177+ pureFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 , latestVal6 ) :
179178 NO_CHANGE ;
180179}
181180
182181/**
183- * If the object or array has changed, returns a copy with all updated expressions.
184- * Or if no expressions have changed, returns NO_CHANGE.
182+ * If the value of any provided exp has changed, calls the pure function to
183+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
185184 *
186- * @param factoryFn
185+ * @param pureFn
187186 * @param exp1
188187 * @param exp2
189188 * @param exp3
190189 * @param exp4
191190 * @param exp5
192191 * @param exp6
193192 * @param exp7
194- * @returns A copy of the object/array or NO_CHANGE
193+ * @returns Updated value or NO_CHANGE
195194 */
196- export function objectLiteral7 (
197- factoryFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any , v6 : any , v7 : any ) => any , exp1 : any ,
195+ export function pureFunction7 (
196+ pureFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any , v6 : any , v7 : any ) => any , exp1 : any ,
198197 exp2 : any , exp3 : any , exp4 : any , exp5 : any , exp6 : any , exp7 : any ) : any {
199198 let different = false ;
200199
@@ -220,16 +219,15 @@ export function objectLiteral7(
220219 if ( bind ( exp7 ) !== NO_CHANGE ) different = true ;
221220
222221 return different ?
223- factoryFn (
224- latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 , latestVal6 , latestVal7 ) :
222+ pureFn ( latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 , latestVal6 , latestVal7 ) :
225223 NO_CHANGE ;
226224}
227225
228226/**
229- * If the object or array has changed, returns a copy with all updated expressions.
230- * Or if no expressions have changed, returns NO_CHANGE.
227+ * If the value of any provided exp has changed, calls the pure function to
228+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
231229 *
232- * @param factoryFn
230+ * @param pureFn
233231 * @param exp1
234232 * @param exp2
235233 * @param exp3
@@ -238,10 +236,10 @@ export function objectLiteral7(
238236 * @param exp6
239237 * @param exp7
240238 * @param exp8
241- * @returns A copy of the object/array or NO_CHANGE
239+ * @returns Updated value or NO_CHANGE
242240 */
243- export function objectLiteral8 (
244- factoryFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any , v6 : any , v7 : any , v8 : any ) => any ,
241+ export function pureFunction8 (
242+ pureFn : ( v1 : any , v2 : any , v3 : any , v4 : any , v5 : any , v6 : any , v7 : any , v8 : any ) => any ,
245243 exp1 : any , exp2 : any , exp3 : any , exp4 : any , exp5 : any , exp6 : any , exp7 : any , exp8 : any ) : any {
246244 let different = false ;
247245
@@ -269,24 +267,24 @@ export function objectLiteral8(
269267 const latestVal8 = exp8 === NO_CHANGE ? peekBinding ( ) : exp8 ;
270268 if ( bind ( exp8 ) !== NO_CHANGE ) different = true ;
271269
272- return different ? factoryFn (
270+ return different ? pureFn (
273271 latestVal1 , latestVal2 , latestVal3 , latestVal4 , latestVal5 , latestVal6 ,
274272 latestVal7 , latestVal8 ) :
275273 NO_CHANGE ;
276274}
277275
278276/**
279- * objectLiteral instruction that can support any number of bindings.
277+ * pureFunction instruction that can support any number of bindings.
280278 *
281- * If the object or array has changed, returns a copy with all updated expressions.
282- * Or if no expressions have changed, returns NO_CHANGE.
279+ * If the value of any provided exp has changed, calls the pure function to
280+ * return an updated value. Or if no values have changed, returns NO_CHANGE.
283281 *
284- * @param factoryFn A factory function that takes binding values and builds an object or array
282+ * @param pureFn A pure function that takes binding values and builds an object or array
285283 * containing those values.
286284 * @param exp An array of binding values
287- * @returns A copy of the object/array or NO_CHANGE
285+ * @returns Updated value or NO_CHANGE
288286 */
289- export function objectLiteralV ( factoryFn : ( v : any [ ] ) => any , exps : any [ ] ) : any {
287+ export function pureFunctionV ( pureFn : ( v : any [ ] ) => any , exps : any [ ] ) : any {
290288 let different = false ;
291289
292290 for ( let i = 0 ; i < exps . length ; i ++ ) {
@@ -295,5 +293,5 @@ export function objectLiteralV(factoryFn: (v: any[]) => any, exps: any[]): any {
295293 if ( bind ( exp ) !== NO_CHANGE ) different = true ;
296294 }
297295
298- return different ? factoryFn ( exps ) : NO_CHANGE ;
296+ return different ? pureFn ( exps ) : NO_CHANGE ;
299297}
0 commit comments