package com.github.sommeri.less4j.core.ast; import java.util.List; import com.github.sommeri.less4j.core.ast.annotations.NotAstProperty; import com.github.sommeri.less4j.core.parser.HiddenTokenAwareTree; import com.github.sommeri.less4j.utils.ArraysUtils; public class FunctionExpression extends Expression { private String name; private Expression parameter; public FunctionExpression(HiddenTokenAwareTree token, String name, Expression parameter) { super(token); this.name = name; this.parameter = parameter; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Expression getParameter() { return parameter; } public void setParameter(Expression parameter) { this.parameter = parameter; } public boolean isCssOnlyFunction() { if (isMsFilter() || hasNamedParameter()) return true; return false; } private boolean hasNamedParameter() { if (getParameter()==null) return false; List<Expression> parameters = getParameter().splitByComma(); for (Expression param : parameters) { if (param.getType()==ASTCssNodeType.NAMED_EXPRESSION) return true; } return false; } private boolean isMsFilter() { return getName().contains(":") || getName().contains("."); } @Override public ASTCssNodeType getType() { return ASTCssNodeType.FUNCTION; } @Override @NotAstProperty public List<? extends ASTCssNode> getChilds() { return ArraysUtils.asNonNullList(parameter); } @Override public FunctionExpression clone() { FunctionExpression result = (FunctionExpression) super.clone(); result.parameter = parameter == null ? null : parameter.clone(); result.configureParentToAllChilds(); return result; } }