From c0db9563cb1d6fc1af8ddc72a9db0ebfa6da4196 Mon Sep 17 00:00:00 2001 From: Amber Date: Thu, 25 Jan 2024 09:00:24 +0100 Subject: [PATCH] cleaning --- src/__pycache__/tree_find.cpython-39.pyc | Bin 3788 -> 3802 bytes src/__pycache__/tree_repr.cpython-39.pyc | Bin 5685 -> 1213 bytes src/tree_find.py | 3 +- src/tree_repr.py | 248 ----------------------- 4 files changed, 2 insertions(+), 249 deletions(-) diff --git a/src/__pycache__/tree_find.cpython-39.pyc b/src/__pycache__/tree_find.cpython-39.pyc index aa95bb779689ecc1892dc47c907c4aa878897f66..aca21788ed7cde9347630a7e538f2224282de578 100644 GIT binary patch delta 349 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 U&&}pb`PKYEujn1gf5UVB2Yf^lFaQ7m diff --git a/src/tree_find.py b/src/tree_find.py index 0ae978b..167be25 100644 --- a/src/tree_find.py +++ b/src/tree_find.py @@ -70,7 +70,8 @@ class NerdTreeFind(NerdTree): if dont_show_children_nodes: for result in results: - result['nchildren'] = len(result['children']) + children = result.get('children') or [] + result['nchildren'] = len(children) result['children'] = [] tree_struct = {} diff --git a/src/tree_repr.py b/src/tree_repr.py index a83bbe2..e7253f5 100644 --- a/src/tree_repr.py +++ b/src/tree_repr.py @@ -46,251 +46,3 @@ def produce_treeline(prec_seps, lsep): return tree_line.rstrip() -def nerd_tree_sort_dirfirst(startpath): - files = [] - dirs = [] - - for item in os.listdir(startpath): - if os.path.isdir(startpath + item): - dirs.append(item) - continue - files.append(item) - - return dirs + files - -def nerd_tree_sort(startpath, dirfirst=True): - ''' - it returns the sorted list of items starting from startpath - ''' - - # dirs = [] - # files = [] - - if dirfirst: - return nerd_tree_sort_dirfirst(startpath) - - return os.listdir(startpath) - -def nerd_tree_from_struct(rootnode, prec_seps=[]): - ''' - rootnode is a dict - ''' - # items = nerd_tree_sort(startpath, dirfirst=True) - - ## rootnode is always a dir -> colorize - rootnode_name = rootnode['name'] - if rootnode.get('color_formatter'): - nerd_tree_txt = rootnode['color_formatter'](rootnode_name) - else: - nerd_tree_txt = rootnode_name - - items = rootnode.get('children') or [] - - for n, item in enumerate(items): - if item['name'] in ITEMS_TO_EXCLUDE: - continue - - islast = (n==len(items) -1) - - sep = CHILD_CONNECTOR - if islast: - sep = LAST_CHILD_CONNECTOR - - if not islast: - psep_char = VERTICAL_CONNECTOR - else: - psep_char = '' - - if item['type'] == 'd': - seps = prec_seps[:] - seps.append((psep_char, {'name' : ''})) - treeline = produce_treeline(prec_seps, (sep, {'name' : ' '})) + ' ' + nerd_tree_from_struct(item, prec_seps=seps) - else: - treeline = produce_treeline(prec_seps, (sep, item)) - - nerd_tree_txt += '\n' + treeline - - return nerd_tree_txt - -def nerd_tree_struct(startpath, path=[]): - ''' - generate a recursive structure representing the tree - starting from startpath - ''' - if not startpath.endswith('/'): - tosplit = startpath - startpath = startpath + '/' - else: - tosplit = startpath[:-1] - - ## it is always a folder - rootnode = tosplit.split('/')[-1] - - # path_copy = path[:] - # path_copy.append(rootnode) - if path: - path.append({ - 'name' : rootnode, - 'type' : 'd', - 'abs_path' : startpath, - }) - else: - path = [{ - 'name' : './', - 'type' : 'd', - 'abs_path' : startpath, - }] - - d = { - 'name' : rootnode, - 'type' :'d', - 'abs_path' : startpath, - 'children' : [], - 'path': path, - } - - # using listdir - try: - items = nerd_tree_sort(startpath, dirfirst=True) - except Exception as ss: - print(f'Path: {startpath} not readable because {ss}') - items = [] - d.setdefault('not_readable', 1) - - for item in items: - if item in ITEMS_TO_EXCLUDE: - continue - - if os.path.isdir(startpath+item): - d['children'].append(nerd_tree_struct(startpath+item, path=path[:])) - else: - path_copy = path[:] - path_copy.append({ - 'name' : item, - 'type' : 'f', - 'abs_path' : startpath + item - }) - - d['children'].append({ - 'name' : item, - 'type' : 'f', - 'abs_path' : startpath + item, - 'path' : path_copy, - }) - - return d - -def find_subtree(node, node_name, results=[]): - ''' - Starting fron node, recursively, find node_name and its subtree - ''' - - if node['name'] == node_name: - node.update({'color_formatter' : YELLOW}) - results.append(node) - - children = node.get('children') or [] - - for item_child in children: - if item_child['type'] == 'd': - find_subtree(item_child, node_name, results) - else: - if item_child['name'] == node_name: - item_child.update({'color_formatter' : YELLOW}) - results.append(item_child) - -def find_node(startpath, item_name): - ''' - @param startpath string - @param item_name string - - search the node with name==item_name (basically a subtree) - starting from startpath - Note: it finds all occurrencies - ''' - rnode = nerd_tree_struct(startpath) - - results = [] - find_subtree(rnode, item_name, results) - - return results - -def find_children(tree, item_abs_path): - ''' - It returns a tuple: - first value True if father of node with item_abs_path is found, - second value represents the children of parent node with item_abs_path - ''' - if tree['abs_path'] == item_abs_path: - if not tree.get('children'): - tree['children'] = [] - return (True, tree['children']) - - children = tree.get('children') or [] - if not children: - return (False, []) - - for child in children: - found, fchildren = find_children(child, item_abs_path) - if found: - return (True, fchildren) - - return (False, []) - -def find_tree_struct(startpath, item_name, opts={}): - ''' - ''' - results = find_node(startpath, item_name) - - dont_show_children_nodes = True if opts.get('dont_show_children_nodes') else False - - if not results: - return {} - - if dont_show_children_nodes: - for result in results: - result['children'] = [] - - tree_struct = {} - - for node in results: - path = node['path'] - - for n,p in enumerate(path): - pcopy = p.copy() - pname = p['name'] - - if pname == './': - if tree_struct: continue - tree_struct = pcopy - tree_struct['children'] = [] - continue - - parent = path[n-1] - found, children = find_children(tree_struct, parent['abs_path']) - - if not found: - raise Exception('Bug!!!') - - if p['abs_path'] in [c['abs_path'] for c in children]: - continue - - islastpath = True if (n== len(path)-1) else False - - if not islastpath: children.append(pcopy) - else : children.append(node) - - return tree_struct - -def nerd_tree(startpath): - tree_struct = nerd_tree_struct(startpath) - tree_txt = nerd_tree_from_struct(tree_struct) - print(tree_txt) - -def find_nerd_tree(startpath, item_name, opts={}): - tree_struct = find_tree_struct(startpath, item_name, opts=opts) - if not tree_struct: - print('No results') - return - tree_txt = nerd_tree_from_struct(tree_struct) - print(tree_txt)