package com.github.sommeri.less4j.core.validators; import java.util.Set; import com.github.sommeri.less4j.core.ast.ASTCssNode; import com.github.sommeri.less4j.core.ast.ASTCssNodeType; import com.github.sommeri.less4j.core.ast.Body; import com.github.sommeri.less4j.core.problems.ProblemsHandler; public class CssAstValidator { private final ProblemsHandler problemsHandler; private final SupportedCSSBodyMembers allowedBodyMembers = new SupportedCSSBodyMembers(); public CssAstValidator(ProblemsHandler problemsHandler) { this.problemsHandler = problemsHandler; } public void validate(ASTCssNode node) { if (node instanceof Body) validateBody((Body) node); // no need to copy the array for validation? for (ASTCssNode kid : node.getChilds()) { validate(kid); } } private void validateBody(Body node) { Set<ASTCssNodeType> supportedMembers = allowedBodyMembers.getSupportedMembers(node); for (ASTCssNode member : node.getMembers()) { if (!supportedMembers.contains(member.getType())) { problemsHandler.wrongMemberInCssBody(member, node); } } } }