package com.github.sommeri.less4j.core.compiler.selectors;
import java.util.ArrayList;
import java.util.List;
import com.github.sommeri.less4j.core.ast.ASTCssNode;
import com.github.sommeri.less4j.core.ast.RuleSet;
import com.github.sommeri.less4j.core.ast.Selector;
public class UselessLessElementsRemover {
private final SelectorsManipulator manipulator = new SelectorsManipulator();
public void removeUselessLessElements(ASTCssNode node) {
switch (node.getType()) {
case RULE_SET:
removeFrom((RuleSet) node);
break;
case CHARSET_DECLARATION:
case IMPORT:
break;
default:
List<ASTCssNode> childs = new ArrayList<ASTCssNode>(node.getChilds());
for (ASTCssNode kid : childs) {
removeUselessLessElements(kid);
}
}
}
public void removeFrom(RuleSet ruleSet) {
List<Selector> selectors = ruleSet.getSelectors();
for (Selector selector : selectors) {
Selector replacement = manipulator.removeAppenders(selector);
if (replacement!=selector)
ruleSet.replaceSelector(selector, replacement);
}
}
}