def _classdef(node, scope): imports = [] dct = {} dct['left'] = do_left(ast.Name(node.name, {}), scope) dct['name'] = node.name; dct['rname'] = resolve(node.name, scope); dct['bases'] = ', '.join(resolve(name.id, scope) for name in node.bases) dct['dec_front'] = '' dct['dec_back'] = '' for dec in node.decorator_list: js = convert_node(dec, scope) dct['dec_front'] += js+'(' dct['dec_back'] += ')' scope = new_scope(scope) scope['exp locals'] = True text = convert_block(node.body, scope) prefix = local_prefix(scope) for name in scope['locals']: text = re.sub('{:undef:' + name + ':[^:]*:}', prefix + name, text) dct['contents'] = text dct['lnum'] = len(scope['parent locals']) text = TEMPLATES['class'] % dct return text
special = '' dct['special'] = special if node.args.vararg: args.append(node.args.vararg) if node.args.kwarg: args.append(node.args.kwarg) dct['args'] = ', '.join(args) dct['dec_front'] = '' dct['dec_back'] = '' for dec in node.decorator_list: js = convert_node(dec, scope) dct['dec_front'] += js+'(' dct['dec_back'] += ')' scope = new_scope(scope) scope['exp locals'] = False for n in args: scope['locals'].append(n) text = convert_block(node.body, scope) prefix = local_prefix(scope) for name in scope['locals']: text = re.sub('{:undef:' + name + ':[^:]*:}', prefix + name, text) #if isinstance(text, Chunks): # text.resolve(local_prefix(scope), scope['locals']) # text.levelUp() dct['contents'] = text text = TEMPLATES['function'] % dct return text