示例#1
0
文件: cimpl.py 项目: prim/anko
def _map(function, iterable, *args):
    if isinstance(iterable, String):
        if iterable.is_unknow():
            return List.from_listt(None, [String.make_unknowt()])
        l = [String.from_stringt(None, i) for i in iterable.value]
        return List.from_listt(None, l)
    return set([iterable])
示例#2
0
文件: classdef.py 项目: prim/anko
def eva_classdef(class_ast, local_namespace):
    # pf(class_ast)
    klass = Class(class_ast)
    name = class_ast.name
    klass.namespace = class_namespace = Namespace(klass)
    class_namespace.global_namespace = local_namespace.global_namespace
    class_namespace.is_class = True
    class_namespace.klass_type = klass
    local_namespace.set(name, klass)

    #TODO decorator_list

    bases = []
    if class_ast.bases:
        for base_ast in class_ast.bases:
            base_class = eva(base_ast, local_namespace)
            bases.append(base_class)
    klass.base_class = bases

    # fpath = local_namespace.global_namespace.fpath
    for ast_node in class_ast.body:
        # domain.connect(fpath, ast_node.lineno, class_namespace)
        eva_statement(ast_node, class_namespace)

    metaklass = class_namespace.get("__metaclass__")
    if metaklass:
        for mc in metaklass:
            if isinstance(mc, Class):
                mcbs = mc.get_attr("__new__")
                for mcb in mcbs:
                    # bases to List
                    # class_namespace to Dict
                    call_metacklass(mcb, name, List.from_list(class_ast, bases), Dict.from_dict(class_ast, class_namespace))
            elif isinstance(mc, Function):
                #TODO
                pass

    # print 999, name
    # pp(class_namespace.__dict__)

    return klass