use of org.python.pydev.parser.jython.ast.BinOp in project Pydev by fabioz.
the class NodeUtils method getRepresentationString.
/**
* @param node this is the node from whom we want to get the representation
* @return A suitable String representation for some node.
*/
public static String getRepresentationString(SimpleNode node, boolean useTypeRepr) {
if (node instanceof NameTok) {
NameTok tok = (NameTok) node;
return tok.id;
}
if (node instanceof Name) {
Name name = (Name) node;
return name.id;
}
if (node instanceof aliasType) {
aliasType type = (aliasType) node;
return ((NameTok) type.name).id;
}
if (node instanceof Attribute) {
Attribute attribute = (Attribute) node;
return discoverRep(attribute.attr);
}
if (node instanceof keywordType) {
keywordType type = (keywordType) node;
return discoverRep(type.arg);
}
if (node instanceof ClassDef) {
ClassDef def = (ClassDef) node;
return ((NameTok) def.name).id;
}
if (node instanceof FunctionDef) {
FunctionDef def = (FunctionDef) node;
return ((NameTok) def.name).id;
}
if (node instanceof Call) {
Call call = ((Call) node);
return getRepresentationString(call.func, useTypeRepr);
}
if (node instanceof org.python.pydev.parser.jython.ast.List || node instanceof ListComp) {
String val = "[]";
if (useTypeRepr) {
val = getBuiltinType(val);
}
return val;
}
if (node instanceof org.python.pydev.parser.jython.ast.Dict || node instanceof org.python.pydev.parser.jython.ast.DictComp) {
String val = "{}";
if (useTypeRepr) {
val = getBuiltinType(val);
}
return val;
}
if (node instanceof BinOp) {
BinOp binOp = (BinOp) node;
if (binOp.left instanceof Str && binOp.op == BinOp.Mod) {
node = binOp.left;
// Just change the node... the check below will work with the Str already.
}
}
if (node instanceof Str) {
String val;
if (useTypeRepr) {
val = getBuiltinType("''");
} else {
val = "'" + ((Str) node).s + "'";
}
return val;
}
if (node instanceof Tuple) {
StringBuffer buf = new StringBuffer();
Tuple t = (Tuple) node;
for (exprType e : t.elts) {
buf.append(getRepresentationString(e, useTypeRepr));
buf.append(", ");
}
if (t.elts.length > 0) {
int l = buf.length();
buf.deleteCharAt(l - 1);
buf.deleteCharAt(l - 2);
}
String val = "(" + buf + ")";
if (useTypeRepr) {
val = getBuiltinType(val);
}
return val;
}
if (node instanceof Num) {
String val = ((Num) node).n.toString();
if (useTypeRepr) {
val = getBuiltinType(val);
}
return val;
}
if (node instanceof Import) {
aliasType[] names = ((Import) node).names;
for (aliasType n : names) {
if (n.asname != null) {
return ((NameTok) n.asname).id;
}
return ((NameTok) n.name).id;
}
}
if (node instanceof commentType) {
commentType type = (commentType) node;
return type.id;
}
if (node instanceof excepthandlerType) {
excepthandlerType type = (excepthandlerType) node;
return type.name.toString();
}
return null;
}
use of org.python.pydev.parser.jython.ast.BinOp in project Pydev by fabioz.
the class NodeUtils method extractValuesFromBinOp.
public static List<String> extractValuesFromBinOp(exprType node, int op) {
List<String> values = new ArrayList<String>();
if (op >= operatorType.operatorTypeNames.length) {
return values;
}
if (node instanceof BinOp) {
BinOp binOp = (BinOp) node;
if (op < 1 || binOp.op == op) {
values.addAll(getInternalBinOpNodeValues(binOp.left, op));
values.addAll(getInternalBinOpNodeValues(binOp.right, op));
}
}
return values;
}
use of org.python.pydev.parser.jython.ast.BinOp in project Pydev by fabioz.
the class NodeUtilsPython3Test method testValuesFromBinOp.
public void testValuesFromBinOp() throws Exception {
Module ast = (Module) parseLegalDocStr("foo: A|B|C");
Assign assign = (Assign) ast.body[0];
BinOp binOp = (BinOp) assign.type;
String[] expectedValues = new String[] { "A", "B", "C" };
List<String> actualValuesList = NodeUtils.extractValuesFromBinOp(binOp);
assertArrayEquals(expectedValues, actualValuesList.toArray());
}
use of org.python.pydev.parser.jython.ast.BinOp in project Pydev by fabioz.
the class NodeUtilsPython3Test method testValuesFromBinOp6.
public void testValuesFromBinOp6() throws Exception {
Module ast = (Module) parseLegalDocStr("foo: A.B | C | D");
Assign assign = (Assign) ast.body[0];
BinOp binOp = (BinOp) assign.type;
String[] expectedValues = new String[] { "A.B", "C", "D" };
List<String> actualValuesList = NodeUtils.extractValuesFromBinOp(binOp, BinOp.BitOr);
assertArrayEquals(expectedValues, actualValuesList.toArray());
}
use of org.python.pydev.parser.jython.ast.BinOp in project Pydev by fabioz.
the class NodeUtilsPython3Test method testValuesFromBinOp4.
public void testValuesFromBinOp4() throws Exception {
Module ast = (Module) parseLegalDocStr("foo: A|B|C");
Assign assign = (Assign) ast.body[0];
BinOp binOp = (BinOp) assign.type;
String[] expectedValues = new String[] { "A", "B", "C" };
List<String> actualValuesList = NodeUtils.extractValuesFromBinOp(binOp, BinOp.BitOr);
assertArrayEquals(expectedValues, actualValuesList.toArray());
}
Aggregations