# Copyright 2014 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import StringIO import yaml import distixlib class MetadataSerialiser(object): def serialise(self, metadata): obj = self._create_python_object(metadata) return self._create_yaml_text(obj) def _create_python_object(self, metadata): obj = {} for key in metadata.keys(): obj[key] = sorted(metadata.get_all_values(key)) return obj def _create_yaml_text(self, obj): return yaml.safe_dump(obj, default_flow_style=False, indent=4) def deserialise(self, text): obj = self._parse_yaml_text(text) return self._create_metadata(obj) def _parse_yaml_text(self, text): return yaml.safe_load(StringIO.StringIO(text)) def _create_metadata(self, obj): metadata = distixlib.Metadata() if obj: for key in obj: for value in obj[key]: metadata.add(key, value) return metadata