package com.github.sommeri.less4j.core.compiler.expressions; import com.github.sommeri.less4j.core.ast.NumberExpression; /** * * Requires perfect match e.g. -0!=0. * */ public class FormalisticExpressionComparator extends ExpressionComparator { @Override protected boolean numberEqual(NumberExpression n1, NumberExpression n2) { return signEq(n1, n2) && suffixEq(n1, n2) && valueEq(n1, n2); } private boolean signEq(NumberExpression n1, NumberExpression n2) { return n1.hasExpliciteSign() == n2.hasExpliciteSign(); } private boolean valueEq(NumberExpression n1, NumberExpression n2) { return equals(n1.getValueAsDouble(), n2.getValueAsDouble()); } private boolean suffixEq(NumberExpression n1, NumberExpression n2) { return equals(n1.getSuffix(), n2.getSuffix()); } protected boolean equals(Double value, Double value2) { if (value == null || value2==null) return value2 == null && value==null; return value.compareTo(value2) == 0; } }