Changeset 90:a8d83de5b460 for nagslang
- Timestamp:
- Sep 2, 2013, 12:18:50 AM (7 years ago)
- Branch:
- default
- amend_source:
- c93013ca211c0a1f766b97f031579d0952b1e962
- Location:
- nagslang
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/level_serializer.py
r89 r90 6 6 7 7 import re 8 # TODO: Dump pyyaml9 import yaml10 8 11 9 12 10 def dump(data, file_object): 13 yaml.dump(data, file_object, default_flow_style=False) 11 file_object.write('\n'.join(_dump(data, 0))) 12 13 14 def _dump(obj, indent): 15 if isinstance(obj, list): 16 for item in obj: 17 yield '%s- %s' % (' ' * indent, 18 '\n'.join(_dump(item, indent + 2)).strip()) 19 elif isinstance(obj, dict): 20 for k, v in obj.iteritems(): 21 if isinstance(v, basestring): 22 yield '%s%s: %s' % (' ' * indent, k, v) 23 else: 24 extra = 0 if isinstance(v, list) else 2 25 yield '%s%s:\n%s' % (' ' * indent, k, 26 '\n'.join(_dump(v, indent + extra))) 27 elif isinstance(obj, basestring): 28 yield '%s%s' % (' ' * indent, obj) 14 29 15 30 … … 56 71 parent_key = None 57 72 58 while lm and lm.group(2).startswith('- '):73 while lm and lm.group(2).startswith('- '): 59 74 # Nested lists 60 75 prefix, line = lm.groups() -
nagslang/tests/test_level_serializer.py
r89 r90 1 from unittest import TestCase 1 from unittest import TestCase, SkipTest 2 2 from StringIO import StringIO 3 4 try: 5 import yaml 6 except ImportError: 7 yaml = None # pyflakes:ignore 3 8 4 9 from nagslang.level_serializer import load, dump 5 10 6 11 7 class Test Simple(TestCase):12 class TestRoundTrip(TestCase): 8 13 def roundtrip(self, data): 9 14 f = StringIO() 15 self.dump(data, f) 16 f.seek(0) 17 print '\n=== Begin ===\n%s\n=== End ===' % f.buf.rstrip() 18 self.assertEqual(self.load(f), data) 19 20 def dump(self, data, f): 10 21 dump(data, f) 11 f.seek(0) 12 #print '\n== Begin ==\n%s== End ==' % f.buf13 self.assertEqual(load(f), data)22 23 def load(self, f): 24 return load(f) 14 25 15 26 def test_simple_dict(self): … … 46 57 ], 47 58 }) 59 60 61 class TestFromPyYAML(TestRoundTrip): 62 def dump(self, data, f): 63 if yaml is None: 64 raise SkipTest('yaml module unavailable') 65 yaml.dump(data, f, default_flow_style=False) 66 67 68 class TestToPyYAML(TestRoundTrip): 69 def load(self, f): 70 if yaml is None: 71 raise SkipTest('yaml module unavailable') 72 return yaml.load(f)
Note: See TracChangeset
for help on using the changeset viewer.