From 5da510210072011cc904b0ecb24e69ad69dfe3bd Mon Sep 17 00:00:00 2001 From: Mike Dirolf Date: Mon, 12 Jan 2009 15:34:00 -0500 Subject: [PATCH] get multiple SON objects from a string of concatenated BSON --- bson.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/bson.py b/bson.py index 6b23daec9..f22ddc919 100644 --- a/bson.py +++ b/bson.py @@ -404,6 +404,17 @@ def is_valid(bson): except (AssertionError, InvalidBSON): return False +def to_dicts(data): + """Convert binary data to sequence of SON objects. + + Data must be concatenated strings of valid BSON data. + """ + dicts = [] + while len(data): + (dict, data) = _document_to_dict(data) + dicts.append(dict) + return dicts + class BSON(str): """BSON data. @@ -476,6 +487,8 @@ class TestBSON(unittest.TestCase): def test_basic_to_dict(self): self.assertEqual({"test": u"hello world"}, BSON("\x1B\x00\x00\x00\x0E\x74\x65\x73\x74\x00\x0C\x00\x00\x00\x68\x65\x6C\x6C\x6F\x20\x77\x6F\x72\x6C\x64\x00\x00").to_dict()) + self.assertEqual([{"test": u"hello world"}, {}], + to_dicts("\x1B\x00\x00\x00\x0E\x74\x65\x73\x74\x00\x0C\x00\x00\x00\x68\x65\x6C\x6C\x6F\x20\x77\x6F\x72\x6C\x64\x00\x00\x05\x00\x00\x00\x00")) def test_basic_from_dict(self): self.assertRaises(TypeError, BSON.from_dict, 100)