Search in sources :

Example 1 with BinOp

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;
}
Also used : org.python.pydev.parser.jython.ast.exprType(org.python.pydev.parser.jython.ast.exprType) Import(org.python.pydev.parser.jython.ast.Import) Attribute(org.python.pydev.parser.jython.ast.Attribute) FunctionDef(org.python.pydev.parser.jython.ast.FunctionDef) DictComp(org.python.pydev.parser.jython.ast.DictComp) Name(org.python.pydev.parser.jython.ast.Name) Str(org.python.pydev.parser.jython.ast.Str) ISpecialStr(org.python.pydev.parser.jython.ISpecialStr) ClassDef(org.python.pydev.parser.jython.ast.ClassDef) org.python.pydev.parser.jython.ast.commentType(org.python.pydev.parser.jython.ast.commentType) org.python.pydev.parser.jython.ast.keywordType(org.python.pydev.parser.jython.ast.keywordType) Call(org.python.pydev.parser.jython.ast.Call) Dict(org.python.pydev.parser.jython.ast.Dict) Num(org.python.pydev.parser.jython.ast.Num) ListComp(org.python.pydev.parser.jython.ast.ListComp) FastStringBuffer(org.python.pydev.shared_core.string.FastStringBuffer) org.python.pydev.parser.jython.ast.aliasType(org.python.pydev.parser.jython.ast.aliasType) org.python.pydev.parser.jython.ast.excepthandlerType(org.python.pydev.parser.jython.ast.excepthandlerType) BinOp(org.python.pydev.parser.jython.ast.BinOp) NameTok(org.python.pydev.parser.jython.ast.NameTok) Tuple(org.python.pydev.parser.jython.ast.Tuple)

Example 2 with BinOp

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;
}
Also used : ArrayList(java.util.ArrayList) BinOp(org.python.pydev.parser.jython.ast.BinOp)

Example 3 with BinOp

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());
}
Also used : Assign(org.python.pydev.parser.jython.ast.Assign) BinOp(org.python.pydev.parser.jython.ast.BinOp) Module(org.python.pydev.parser.jython.ast.Module)

Example 4 with BinOp

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());
}
Also used : Assign(org.python.pydev.parser.jython.ast.Assign) BinOp(org.python.pydev.parser.jython.ast.BinOp) Module(org.python.pydev.parser.jython.ast.Module)

Example 5 with BinOp

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());
}
Also used : Assign(org.python.pydev.parser.jython.ast.Assign) BinOp(org.python.pydev.parser.jython.ast.BinOp) Module(org.python.pydev.parser.jython.ast.Module)

Aggregations

BinOp (org.python.pydev.parser.jython.ast.BinOp)15 Module (org.python.pydev.parser.jython.ast.Module)10 Assign (org.python.pydev.parser.jython.ast.Assign)8 ArrayList (java.util.ArrayList)4 ISpecialStr (org.python.pydev.parser.jython.ISpecialStr)4 Attribute (org.python.pydev.parser.jython.ast.Attribute)4 Str (org.python.pydev.parser.jython.ast.Str)4 SimpleNode (org.python.pydev.parser.jython.SimpleNode)3 Name (org.python.pydev.parser.jython.ast.Name)3 Num (org.python.pydev.parser.jython.ast.Num)3 Subscript (org.python.pydev.parser.jython.ast.Subscript)3 List (java.util.List)2 ITypeInfo (org.python.pydev.core.ITypeInfo)2 TokensList (org.python.pydev.core.TokensList)2 AugAssign (org.python.pydev.parser.jython.ast.AugAssign)2 Call (org.python.pydev.parser.jython.ast.Call)2 Dict (org.python.pydev.parser.jython.ast.Dict)2 DictComp (org.python.pydev.parser.jython.ast.DictComp)2 Exec (org.python.pydev.parser.jython.ast.Exec)2 Expr (org.python.pydev.parser.jython.ast.Expr)2