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 CssClass extends ElementSubsequent { private InterpolableName name; private String cachedName; private String cachedFullName; public CssClass(HiddenTokenAwareTree token, InterpolableName name) { super(token); this.name = name; } public String getName() { if (cachedName != null) { return cachedName; } String result = name.getName(); if (!isInterpolated()) { cachedName = result; } return result; } public String getFullName() { if (cachedFullName != null) { return cachedFullName; } String result = "." + getName(); if (!isInterpolated()) { cachedFullName = result; } return result; } @Override public boolean isInterpolated() { return name.isInterpolated(); } @Override public void extendName(String extension) { name.extendName(extension); cachedName = null; cachedFullName = null; } @Override public ASTCssNodeType getType() { return ASTCssNodeType.CSS_CLASS; } @Override @NotAstProperty public List<? extends ASTCssNode> getChilds() { return ArraysUtils.asNonNullList(name); } @Override public CssClass clone() { CssClass clone = (CssClass) super.clone(); clone.name = name.clone(); clone.configureParentToAllChilds(); return clone; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("CssClass ["); builder.append(getFullName()); builder.append("]"); return builder.toString(); } }