Source code for pureyaml.decoder

#!/usr/bin/env python
# coding=utf-8

from __future__ import absolute_import

from .nodes import NodeVisitor
from .parser import YAMLParser


# noinspection PyMethodMayBeStatic
[docs]class YAMLDecoder(NodeVisitor): """Convert node tree into python object."""
[docs] def decode(self, s): return self.visit(YAMLParser().parse(s))
[docs] def visit_Docs(self, node): for doc in node.value: yield (yield doc)
[docs] def visit_Sequence(self, node): sequence = [] for item in node.value: sequence.append((yield item)) yield sequence
[docs] def visit_Map(self, node): _map = {} for key, value in node.value: _map[(yield key)] = (yield value) yield _map
[docs] def visit_Scalar(self, node): return node.type(node.value)
[docs] def visit_Null(self, _): return None
visit_Doc = visit_Docs visit_Str = visit_Scalar visit_Int = visit_Scalar visit_Float = visit_Scalar visit_Bool = visit_Scalar
[docs] def visit_Binary(self, node): return node.value