diff options
Diffstat (limited to 'src/pyssg/cfg/yaml_parser.py')
-rw-r--r-- | src/pyssg/cfg/yaml_parser.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/pyssg/cfg/yaml_parser.py b/src/pyssg/cfg/yaml_parser.py new file mode 100644 index 0000000..dacad70 --- /dev/null +++ b/src/pyssg/cfg/yaml_parser.py @@ -0,0 +1,23 @@ +import yaml +from yaml import SafeLoader +from yaml.nodes import SequenceNode +from typing import Any + + +# required to concat values in yaml using !join [value, value, ...] +def __join_constructor(loader: SafeLoader, node: SequenceNode) -> str: + seq = loader.construct_sequence(node) + return ''.join([str(i) for i in seq]) + + +def setup_custom_yaml() -> None: + SafeLoader.add_constructor('!join', __join_constructor) + + +def get_yaml(path: str) -> list[dict[str, Any]]: + all_docs: list[dict[str, Any]] = [] + with open(path, 'r') as f: + for doc in yaml.safe_load_all(f): + all_docs.append(doc) + return all_docs + |