diff --git a/tools/python/jwutils/stree/serdes.py b/tools/python/jwutils/stree/serdes.py index 6c69084..b47db38 100644 --- a/tools/python/jwutils/stree/serdes.py +++ b/tools/python/jwutils/stree/serdes.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -import os +import os, glob from jwutils.stree.StringTree import * from jwutils.log import * @@ -70,7 +70,7 @@ def parse(s: str, allow_full_lines: bool=True, root_content: str='root') -> Stri root.add(sec + '.' + cleanup_string(lhs), cleanup_string(rhs), split=split) return root -def _read_lines(path: str, throw=True, level=0, log_prio=INFO, paths_buf=None): +def _read_lines_from_one_path(path: str, throw=True, level=0, log_prio=INFO, paths_buf=None): try: with open(path, 'r') as infile: slog(log_prio, 'Reading {}"{}"'.format(' ' * level * 2, path)) @@ -102,7 +102,17 @@ def _read_lines(path: str, throw=True, level=0, log_prio=INFO, paths_buf=None): slog(DEBUG, msg) return None +def _read_lines(path: str, throw=True, level=0, log_prio=INFO, paths_buf=None): + paths = glob.glob(path) + ret = [] + for p in paths: + rr = _read_lines_from_one_path(p, throw=throw, level=level, log_prio=log_prio, paths_buf=paths_buf) + if rr is None: + return None + ret.extend(rr) + return ret + def read(path: str, root_content: str='root', log_prio=INFO, paths_buf=None) -> StringTree: # export - lines = _read_lines(path, log_prio=log_prio, paths_buf=paths_buf) + lines = _read_lines_from_one_path(path, log_prio=log_prio, paths_buf=paths_buf) s = ''.join(lines) return parse(s, root_content=root_content)