Verified Commit baef5aff authored by Adrian DC's avatar Adrian DC
Browse files

feat(yaml): add support for multi-documents YAML files

Issue: #277
---

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent 60d76dfd
Loading
Loading
Loading
Loading
Loading
+16 −3
Changes for src/types/yaml.py: 16 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ from sys import maxsize
from typing import Any, Dict, List, Optional

# Modules libraries
from yaml import dump as yaml_dump, load as yaml_load
from yaml import dump as yaml_dump, load_all as yaml_load_all
from yaml import SafeLoader as yaml_SafeLoader, YAMLError as yaml_Error
from yaml.nodes import SequenceNode as yaml_SequenceNode

@@ -104,13 +104,26 @@ class YAML:

        # Variables
        data: Optional[YAML.Data]
        documents: List[YAML.Data]

        # Prepare loader class
        loader = yaml_SafeLoader
        loader.add_constructor(YAML.Reference.TAG, YAML.Reference.add_constructor)

        # Load YAML data
        data = yaml_load(stream, Loader=loader)
        # Load YAML documents
        documents = list(yaml_load_all(stream, Loader=loader))

        # Acquire YAML configuration data
        if len(documents) == 1:
            data = documents[0]

        # Empty YAML data
        elif len(documents) == 0:
            data = {}

        # Unsupport YAML data
        else:
            data = documents[-1]

        # Result
        return data