package xapi.dev.ui; import com.github.javaparser.ASTHelper; import com.github.javaparser.ast.expr.UiAttrExpr; import com.github.javaparser.ast.expr.UiContainerExpr; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; import xapi.collect.X_Collect; import xapi.collect.api.StringTo; /** * Created by james on 6/7/16. */ public class RefCollectorVisitor extends VoidVisitorAdapter<Object> { public UiContainerExpr current; StringTo<UiContainerExpr> refMap = X_Collect.newStringMap(UiContainerExpr.class); public static StringTo<UiContainerExpr> collectRefs(UiContainerExpr container) { RefCollectorVisitor visitor = new RefCollectorVisitor(); container.accept(visitor, null); return visitor.refMap; } @Override public void visit(UiContainerExpr n, Object arg) { final UiContainerExpr was = current; current = n; super.visit(n, arg); current = was; } @Override public void visit(UiAttrExpr n, Object arg) { switch (n.getName().getName()) { case "ref": String ref = ASTHelper.extractAttrValue(n); refMap.put(ref, current); break; } super.visit(n, arg); } }