@@ -179,16 +179,15 @@ const toBoolean = (value) => {
179
179
*/
180
180
const isWhiteSpace = ( val ) => {
181
181
return val === null || ( typeof val === 'string' && val . trim ( ) . length === 0 ) ;
182
- }
182
+ } ;
183
183
184
184
/**
185
- * Compare two values using Scratch casting.
186
- * Similar to Cast.compare()
187
- * @param {* } v1 First value to compare.
188
- * @param {* } v2 Second value to compare.
189
- * @returns {number } Negative if v1 < v2, 0 if equal, positive if v1 > v2
185
+ * Determine if two values are equal.
186
+ * @param {* } v1
187
+ * @param {* } v2
188
+ * @returns {boolean } true if v1 is equal to v2
190
189
*/
191
- const compare = ( v1 , v2 ) => {
190
+ const compareEqual = ( v1 , v2 ) => {
192
191
let n1 = + v1 ;
193
192
let n2 = + v2 ;
194
193
if ( n1 === 0 && isWhiteSpace ( v1 ) ) {
@@ -199,20 +198,53 @@ const compare = (v1, v2) => {
199
198
if ( isNaN ( n1 ) || isNaN ( n2 ) ) {
200
199
const s1 = ( '' + v1 ) . toLowerCase ( ) ;
201
200
const s2 = ( '' + v2 ) . toLowerCase ( ) ;
202
- if ( s1 < s2 ) {
203
- return - 1 ;
204
- } else if ( s1 > s2 ) {
205
- return 1 ;
206
- }
207
- return 0 ;
201
+ return s1 === s2 ;
202
+ }
203
+ return n1 === n2 ;
204
+ } ;
205
+
206
+ /**
207
+ * Determine if one value is greater than another.
208
+ * @param {* } v1
209
+ * @param {* } v2
210
+ * @returns {boolean } true if v1 is greater than v2
211
+ */
212
+ const compareGreaterThan = ( v1 , v2 ) => {
213
+ let n1 = + v1 ;
214
+ let n2 = + v2 ;
215
+ if ( n1 === 0 && isWhiteSpace ( v1 ) ) {
216
+ n1 = NaN ;
217
+ } else if ( n2 === 0 && isWhiteSpace ( v2 ) ) {
218
+ n2 = NaN ;
219
+ }
220
+ if ( isNaN ( n1 ) || isNaN ( n2 ) ) {
221
+ const s1 = ( '' + v1 ) . toLowerCase ( ) ;
222
+ const s2 = ( '' + v2 ) . toLowerCase ( ) ;
223
+ return s1 > s2 ;
224
+ }
225
+ return n1 > n2 ;
226
+ } ;
227
+
228
+ /**
229
+ * Determine if one value is less than another.
230
+ * @param {* } v1
231
+ * @param {* } v2
232
+ * @returns {boolean } true if v1 is less than v2
233
+ */
234
+ const compareLessThan = ( v1 , v2 ) => {
235
+ let n1 = + v1 ;
236
+ let n2 = + v2 ;
237
+ if ( n1 === 0 && isWhiteSpace ( v1 ) ) {
238
+ n1 = NaN ;
239
+ } else if ( n2 === 0 && isWhiteSpace ( v2 ) ) {
240
+ n2 = NaN ;
208
241
}
209
- if (
210
- ( n1 === Infinity && n2 === Infinity ) ||
211
- ( n1 === - Infinity && n2 === - Infinity )
212
- ) {
213
- return 0 ;
242
+ if ( isNaN ( n1 ) || isNaN ( n2 ) ) {
243
+ const s1 = ( '' + v1 ) . toLowerCase ( ) ;
244
+ const s2 = ( '' + v2 ) . toLowerCase ( ) ;
245
+ return s1 < s2 ;
214
246
}
215
- return n1 - n2 ;
247
+ return n1 < n2 ;
216
248
} ;
217
249
218
250
/**
0 commit comments