| 1368 | return nil |
| 1369 | } |
| 1370 | func (m *BinaryNode) Equal(n Node) bool { |
| 1371 | if m == nil && n == nil { |
| 1372 | return true |
| 1373 | } |
| 1374 | if m == nil && n != nil { |
| 1375 | return false |
| 1376 | } |
| 1377 | if m != nil && n == nil { |
| 1378 | return false |
| 1379 | } |
| 1380 | if nt, ok := n.(*BinaryNode); ok { |
| 1381 | if nt.Operator.T != m.Operator.T { |
| 1382 | return false |
| 1383 | } |
| 1384 | if nt.Operator.V != m.Operator.V { |
| 1385 | if strings.ToLower(nt.Operator.V) != strings.ToLower(m.Operator.V) { |
| 1386 | return false |
| 1387 | } |
| 1388 | } |
| 1389 | if nt.Paren != m.Paren { |
| 1390 | return false |
| 1391 | } |
| 1392 | if len(m.Args) != len(nt.Args) { |
| 1393 | return false |
| 1394 | } |
| 1395 | for i, arg := range nt.Args { |
| 1396 | if !arg.Equal(m.Args[i]) { |
| 1397 | return false |
| 1398 | } |
| 1399 | } |
| 1400 | return true |
| 1401 | } |
| 1402 | return false |
| 1403 | } |
| 1404 | |
| 1405 | // NewBooleanNode Create a boolean node |
| 1406 | // @operator = AND, OR |