public boolean areEqualsWithCoercion()

in johnzon-jsonlogic/src/main/java/org/apache/johnzon/jsonlogic/JohnzonJsonLogic.java [162:209]


    public boolean areEqualsWithCoercion(final JsonValue a, final JsonValue b) {
        if (a == b) {
            return true;
        }
        if (a == null) {
            return false;
        }
        if (b == null) {
            return false;
        }
        if (a.getValueType() == b.getValueType()) {
            return a.equals(b);
        }
        switch (a.getValueType()) {
            case STRING:
                switch (b.getValueType()) {
                    case NUMBER:
                        try {
                            return Double.parseDouble(JsonString.class.cast(a).getString()) == JsonNumber.class.cast(b).doubleValue();
                        } catch (final NumberFormatException nfe) {
                            return false;
                        }
                    case TRUE:
                    case FALSE:
                        return isFalsy(a) == isFalsy(b);
                    default:
                        return false;
                }
            case NUMBER:
                switch (b.getValueType()) {
                    case STRING:
                        try {
                            return Double.parseDouble(JsonString.class.cast(b).getString()) == JsonNumber.class.cast(a).doubleValue();
                        } catch (final NumberFormatException nfe) {
                            return false;
                        }
                    case TRUE:
                    case FALSE:
                    default:
                        return isFalsy(a) == isFalsy(b);
                }
            case TRUE:
            case FALSE:
                return isFalsy(a) == isFalsy(b);
            default:
                return false;
        }
    }