package com.github.sommeri.less4j.core.compiler.expressions; import com.github.sommeri.less4j.core.ast.EscapedValue; import com.github.sommeri.less4j.core.ast.Expression; import com.github.sommeri.less4j.core.ast.IdentifierExpression; import com.github.sommeri.less4j.core.ast.NumberExpression; public class GuardsComparator extends ExpressionComparator { @Override protected boolean numberEqual(NumberExpression pattern, NumberExpression numberExpression) { if (!pattern.convertibleTo(numberExpression)) return false; NumberExpression value = pattern.convertIfPossible(numberExpression.getSuffix()); return equals(value.getValueAsDouble(), numberExpression.getValueAsDouble()); } @Override protected boolean equalIdentifier(IdentifierExpression pattern, Expression expression) { if (expression instanceof EscapedValue) { return equals(pattern.getValue(), ((EscapedValue) expression).getValue()); } return super.equalIdentifier(pattern, expression); } @Override protected boolean equalEscapedValue(EscapedValue pattern, Expression expression) { if (expression instanceof IdentifierExpression) { return equals(pattern.getValue(), ((IdentifierExpression) expression).getValue()); } return super.equalEscapedValue(pattern, expression); } }