diff --git a/src/materials.py b/src/materials.py index f98708b..412c57d 100755 --- a/src/materials.py +++ b/src/materials.py @@ -31,14 +31,17 @@ def absolute_path(filename): return os.path.join(os.path.abspath(os.path.dirname(__file__)), filename) -def read_dir(directory, exclude=None): +def read_dir(directory, exclude=None, fullpath=False, extension=True): """\ Read all files in directory as list """ result = [] - for data in os.listdir(directory): - file_name = data.split('.')[0] + for file_name in os.listdir(directory): + if not extension: + file_name = file_name.split('.')[0] if exclude is not None and file_name not in exclude: + if fullpath: + file_name = absolute_path(os.path.join(directory, file_name)) result.append(file_name) return result @@ -48,7 +51,7 @@ def print_list(data_list): Print list """ for data in data_list: - print(data.title()) + print(data) def read_file(filename): @@ -74,7 +77,7 @@ def print_data(data): pprint(loads(data)) -def search_keys(data, keys=None): +def search_keys(data, keys): """\ Search for json keys in string data """ @@ -92,21 +95,28 @@ def search_keys(data, keys=None): loads(json_repr, object_hook=_decode_dict) # return value ignored return results + results = {} if keys is not None: + if isinstance(keys, str): + keys = [keys] for key in keys: found_values = find_values(key, data) - #print(found_values) - for value in found_values: - print(key + ' = ' + '%s' % value[0] + ' ' + value[1]) + results[key] = found_values + return results - #def getLength(element): - # try: - # element.__iter__ - # return sum([getLength(i) for i in element]) - # except: - # return 1 - #print(len(data)) - #print(getLength(json.loads(data))) + +def print_dict(data_dict, print_keys=True, prespaces=0): + """\ + Search for json keys in string data + """ + for key, values in data_dict.items(): + for value in values: + if print_keys: + print(key + ' = ', end='') + if isinstance(value, list) and len(value) == 2: + print(prespaces*' ' + '%s' % value[0] + ' ' + value[1]) + else: + print(prespaces*' ' + '%s' % value) def main(): @@ -152,8 +162,13 @@ def main(): print(args) if args.command == 'list': - data_list = read_dir(absolute_path("data"), "INFO") - print_list(data_list) + file_list = read_dir(absolute_path("data"), "INFO.json", True) + for filename in file_list: + file, _ = os.path.splitext(os.path.basename(filename)) + print(file.title()) + data = read_file(filename) + data_dict = search_keys(data, 'Name') + print_dict(data_dict, False, 2) elif args.command == 'get': filename = os.path.join('data', args.materialname.lower() + '.json') @@ -170,7 +185,8 @@ def main(): search_list = [element for element in args.search.split(',')] if args.debug: print("search_list: " + str(search_list)) - search_keys(data, keys=search_list) + data_dict = search_keys(data, keys=search_list) + print_dict(data_dict) else: print_data(data)