package com.github.sommeri.less4j.core.ast;
import java.util.Collections;
import java.util.List;
import com.github.sommeri.less4j.core.ast.annotations.NotAstProperty;
import com.github.sommeri.less4j.core.parser.HiddenTokenAwareTree;
public class SelectorCombinator extends ASTCssNode implements Cloneable {
private CombinatorType combinator;
private String symbol;
public SelectorCombinator(HiddenTokenAwareTree underlyingStructure) {
this(underlyingStructure, CombinatorType.DESCENDANT, CombinatorType.DESCENDANT.getDefaultSymbol());
}
public SelectorCombinator(HiddenTokenAwareTree underlyingStructure, CombinatorType combinator) {
this(underlyingStructure, combinator, combinator.getDefaultSymbol());
}
public SelectorCombinator(HiddenTokenAwareTree underlyingStructure, CombinatorType combinator, String symbol) {
super(underlyingStructure);
this.combinator = combinator;
this.symbol = symbol;
}
public CombinatorType getCombinatorType() {
return combinator;
}
public void setCombinator(CombinatorType combinator) {
this.combinator = combinator;
}
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
@Override
public ASTCssNodeType getType() {
return ASTCssNodeType.SELECTOR_COMBINATOR;
}
@Override
@NotAstProperty
public List<? extends ASTCssNode> getChilds() {
return Collections.emptyList();
}
public enum CombinatorType {
ADJACENT_SIBLING("+"), CHILD(">"), DESCENDANT("' '"), GENERAL_SIBLING("~"), HAT("^"), CAT("^^"), NAMED(null);
private final String symbol;
private CombinatorType(String symbol) {
this.symbol = symbol;
}
private String getDefaultSymbol() {
return symbol;
}
}
@Override
public SelectorCombinator clone() {
return (SelectorCombinator) super.clone();
}
@Override
public String toString() {
return symbol;
}
}