@@ -141,8 +141,7 @@ export function configurePrecision (engine, constructor, compatible = true) {
141
141
engine . addMethod ( '===' , {
142
142
method : ( args ) => {
143
143
if ( args . length === 2 ) {
144
- if ( args [ 0 ] . eq ) return args [ 0 ] . eq ( args [ 1 ] )
145
- if ( args [ 1 ] . eq ) return args [ 1 ] . eq ( args [ 0 ] )
144
+ if ( args [ 0 ] . eq && args [ 1 ] . eq ) return args [ 0 ] . eq ( args [ 1 ] )
146
145
return args [ 0 ] === args [ 1 ]
147
146
}
148
147
for ( let i = 1 ; i < args . length ; i ++ ) {
@@ -155,11 +154,48 @@ export function configurePrecision (engine, constructor, compatible = true) {
155
154
traverse : true
156
155
} , { sync : true , deterministic : true } )
157
156
158
- engine . addMethod ( '!==' , {
157
+ engine . addMethod ( '==' , {
158
+ method : ( args ) => {
159
+ if ( args . length === 2 ) {
160
+ if ( args [ 0 ] . eq ) return args [ 0 ] . eq ( args [ 1 ] )
161
+ if ( args [ 1 ] . eq ) return args [ 1 ] . eq ( args [ 0 ] )
162
+ // eslint-disable-next-line eqeqeq
163
+ return args [ 0 ] == args [ 1 ]
164
+ }
165
+ for ( let i = 1 ; i < args . length ; i ++ ) {
166
+ if ( args [ i - 1 ] . eq && ! args [ i - 1 ] . eq ( args [ i ] ) ) return false
167
+ if ( args [ i ] . eq && ! args [ i ] . eq ( args [ i - 1 ] ) ) return false
168
+ // eslint-disable-next-line eqeqeq
169
+ if ( args [ i - 1 ] != args [ i ] ) return false
170
+ }
171
+ return true
172
+ } ,
173
+ traverse : true
174
+ } , { sync : true , deterministic : true } )
175
+
176
+ engine . addMethod ( '!=' , {
159
177
method : ( args ) => {
160
178
if ( args . length === 2 ) {
161
179
if ( args [ 0 ] . eq ) return ! args [ 0 ] . eq ( args [ 1 ] )
162
180
if ( args [ 1 ] . eq ) return ! args [ 1 ] . eq ( args [ 0 ] )
181
+ // eslint-disable-next-line eqeqeq
182
+ return args [ 0 ] != args [ 1 ]
183
+ }
184
+ for ( let i = 1 ; i < args . length ; i ++ ) {
185
+ if ( args [ i - 1 ] . eq && args [ i - 1 ] . eq ( args [ i ] ) ) return false
186
+ if ( args [ i ] . eq && args [ i ] . eq ( args [ i - 1 ] ) ) return false
187
+ // eslint-disable-next-line eqeqeq
188
+ if ( args [ i - 1 ] !== args [ i ] ) return true
189
+ }
190
+ return true
191
+ } ,
192
+ traverse : true
193
+ } , { sync : true , deterministic : true } )
194
+
195
+ engine . addMethod ( '!==' , {
196
+ method : ( args ) => {
197
+ if ( args . length === 2 ) {
198
+ if ( args [ 0 ] . eq && args [ 1 ] . eq ) return ! args [ 0 ] . eq ( args [ 1 ] )
163
199
return args [ 0 ] !== args [ 1 ]
164
200
}
165
201
for ( let i = 1 ; i < args . length ; i ++ ) {
0 commit comments