# HG changeset patch # User Stefano Rivera # Date 1378128679 -7200 # Node ID e6e7a471146a63778fba29cd957e96dc7709d1b8 # Parent b75de48a618c5fbf77c98ceced3fc62e6384b66b Support numeric types diff -r b75de48a618c -r e6e7a471146a nagslang/tests/test_yamlish.py --- a/nagslang/tests/test_yamlish.py Mon Sep 02 15:27:51 2013 +0200 +++ b/nagslang/tests/test_yamlish.py Mon Sep 02 15:31:19 2013 +0200 @@ -86,6 +86,9 @@ def test_literals(self): self.roundtrip({'foo': [True, False, None]}) + def test_numeric(self): + self.roundtrip({'foo': [1, 2.0, -1, -2.5]}) + class TestFromPyYAML(TestRoundTrip): def dump_s(self, data): diff -r b75de48a618c -r e6e7a471146a nagslang/yamlish.py --- a/nagslang/yamlish.py Mon Sep 02 15:27:51 2013 +0200 +++ b/nagslang/yamlish.py Mon Sep 02 15:31:19 2013 +0200 @@ -4,6 +4,7 @@ lists and dicts can contain: * lists, dicts, * single line strings, + * ints, floats, * True, False, and None ''' @@ -32,7 +33,7 @@ return '\n'.join(self._dump(data)) def _dump(self, data, indent=0): - for type_ in (list, dict, basestring): + for type_ in (list, dict, basestring, int, float): if isinstance(data, type_): f = getattr(self, '_dump_%s' % type_.__name__) return f(data, indent) @@ -67,6 +68,12 @@ data = "'%s'" % data return [' ' * indent + data] + def _dump_int(self, data, indent): + return ['%s%i' % (' ' * indent, data)] + + def _dump_float(self, data, indent): + return ['%s%f' % (' ' * indent, data)] + def _dump_literal(self, data, indent): string = { True: 'true', @@ -179,4 +186,9 @@ return False if value == 'null': return None + for type_ in (int, float): + try: + return type_(value) + except ValueError: + pass return value