Skip to content

Refactor JSON parser #305

@nicoweidner

Description

@nicoweidner

We want a refactored parser using the new data model (available on https://github.com/spdx/tools-python/tree/refactor-python-tools).

Possible basic interface (maybe extract an abstract base class later) as follows. The parser class should use composition instead of inheritance.

class JsonParser:
    creation_info_parser: CreationInfoParser
    package_parser: PackageParser
    file_parser: FileParser
    <...>

    def parse(self, filename: str) -> Document:
        logger = Logger()
         with open(filename) as file:
             input_doc_as_dict = json.load(file)
         document: Document = creation_info_parser.parse(input_doc_as_dict, logger)
         document.packages = package_parser.parse(input_doc_as_dict.get("packages"), logger)
        <...>
        
        if logger.has_errors():
            raise SpdxParsingError(logger.get_errors())
        return document

Metadata

Metadata

Assignees

Labels

parserIssues related to the parser layer

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions