예제 #1
0
파일: tests.py 프로젝트: kaapstorm/listdict
 def test_parser(self):
     tests = [
         # string
         ("['eggs': 'spam', 'ham': 'spam']", OrderedDict([('eggs', 'spam'), ('ham', 'spam')])),
         ("""['eg"gs': 'sp\\'am']""", OrderedDict([('eg"gs', "sp'am")])),
         # bool
         ("[True: False]", OrderedDict([(True, False)])),
         # int, float and None
         ("[1: -2.2, None: -1]", OrderedDict([(1, -2.2), (None, -1)])),
         # set
         ("['eggs': set()]", OrderedDict([('eggs', set())])),
         ("['eggs': {'spam', 'ham'}]", OrderedDict([('eggs', {'spam', 'ham'})])),
         # dict
         ("['eggs': {}, 'ham': dict()]", OrderedDict([('eggs', dict()), ('ham', dict())])),
         ("['eggs': {'spam': 'ham'}]", OrderedDict([('eggs', {'spam': 'ham'})])),
         # listdict
         ("['eggs': listdict()]", OrderedDict([('eggs', OrderedDict())])),
         ("['eggs': ['spam': 'ham']]", OrderedDict([('eggs', OrderedDict([('spam', 'ham')]))])),
         # tuple
         ("['eggs': (), 'ham': tuple()]", OrderedDict([('eggs', tuple()), ('ham', tuple())])),
         ("['eggs': ('spam', 'ham')]", OrderedDict([('eggs', ('spam', 'ham'))])),
         # list
         ("['eggs': ['spam', 'ham']]", OrderedDict([('eggs', ['spam', 'ham'])])),
         ("['eggs': [], 'ham': list()]", OrderedDict([('eggs', list()), ('ham', list())])),
         # nesting
         ("['eggs': ('spam', {'spam': ['spam': {'spam', 'ham'}]})]",
          OrderedDict([('eggs', ('spam', {'spam': OrderedDict([('spam', {'spam', 'ham'})])}))])),
         ("[('eggs', ('ham', 'spam')): ('spam', {'spam': ['spam': {'spam', 'ham'}]})]",
          OrderedDict([(('eggs', ('ham', 'spam')), ('spam', {'spam': OrderedDict([('spam', {'spam', 'ham'})])}))])),
     ]
     for ld, od in tests:
         parsed = listdict_parser.parseString(ld)[0]
         self.assertEqual(parsed, od, 'Failed to parse "%s" correctly.' % ld)
예제 #2
0
def loads(listdict_repr):
    """
    Converts "['eggs': 'spam']" to OrderedDict([('eggs': 'spam')])

    >>> loads("['eggs': 'spam', 'ham': 'spam']")
    OrderedDict([('eggs', 'spam'), ('ham', 'spam')])

    >>> loads('listdict()')
    OrderedDict()

    """
    return listdict_parser.parseString(listdict_repr)[0]