package org.kevoree.kevscript.expression;
import org.kevoree.kevscript.Type;
import org.kevoree.kevscript.util.TypeFQN;
import org.waxeye.ast.IAST;
import java.util.Map;
/**
*
* Created by leiko on 12/15/16.
*/
public class TypeDefExpr {
public static TypeFQN interpret(final IAST<Type> node, final Map<String, String> ctxVars) {
final String fqn = parseTypeFQN(node.getChildren().get(0));
String namespace;
String name;
final int dotIndex = fqn.lastIndexOf(".");
if (dotIndex == -1) {
namespace = "kevoree";
name = fqn;
} else {
namespace = fqn.substring(0, dotIndex);
name = fqn.substring(dotIndex + 1);
}
final TypeFQN typeFqn = new TypeFQN();
typeFqn.namespace = namespace;
typeFqn.name = name;
if (node.getChildren().size() == 1) {
// default version (LATEST/RELEASE)
typeFqn.version = TypeFQN.Version.defaultVersion();
} else {
// version is not default
typeFqn.version = VersionExpr.interpret(node.getChildren().get(1), ctxVars);
}
return typeFqn;
}
private static String parseTypeFQN(final IAST<Type> node) {
String fqn = "";
for (IAST<Type> child: node.getChildren()) {
if (child.getChildren().isEmpty()) {
fqn += child.toString();
} else {
fqn += child.childrenAsString();
}
}
return fqn;
}
}