package com.github.sommeri.less4j.core.compiler.expressions; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import com.github.sommeri.less4j.core.ast.ASTCssNodeType; import com.github.sommeri.less4j.core.ast.Expression; import com.github.sommeri.less4j.core.problems.ProblemsHandler; public abstract class AbstractMultiParameterFunction extends AbstractFunction { protected abstract int getMinParameters(); protected abstract int getMaxParameters(); protected abstract String getName(); protected abstract boolean validateParameter(Expression parameter, int position, ProblemsHandler problemsHandler); protected boolean validateParameterTypeReportError(Expression parameter, ProblemsHandler problemsHandler, ASTCssNodeType... expected) { boolean isValid = validateParameterTypeDoNotReport(parameter, problemsHandler, expected); if (!isValid) { problemsHandler.wrongArgumentTypeToFunction(parameter, getName(), parameter.getType(), expected); } return isValid; } protected boolean validateParameterTypeDoNotReport(Expression parameter, ProblemsHandler problemsHandler, ASTCssNodeType... expected) { Set<ASTCssNodeType> expectedSet = new HashSet<ASTCssNodeType>(Arrays.asList(expected)); if (!expectedSet.contains(parameter.getType())) { return false; } else { return true; } } }