Update datetypename() to work with DictType and ArrayType instances.

--HG--
extra : source : cef0a57e57255c4437922d3c2b0a81c84ad29b07
This commit is contained in:
Doug Hellmann 2012-12-05 19:22:14 -05:00
parent 322dca63c5
commit 6af9b92878
2 changed files with 24 additions and 0 deletions

View File

@ -3,6 +3,7 @@ import sphinx
import os.path
import wsme.types
from wsme import sphinxext
docpath = os.path.join(
os.path.dirname(__file__),
@ -24,3 +25,21 @@ class TestSphinxExt(unittest.TestCase):
'-d', '.test_sphinxext/doctree',
docpath,
'.test_sphinxext/html']) == 0
class TestDataTypeName(unittest.TestCase):
def test_user_type(self):
self.assertEqual(sphinxext.datatypename(ASampleType),
'ASampleType')
def test_dict_type(self):
d = wsme.types.DictType(str, str)
self.assertEqual(sphinxext.datatypename(d), 'dict(str: str)')
d = wsme.types.DictType(str, ASampleType)
self.assertEqual(sphinxext.datatypename(d), 'dict(str: ASampleType)')
def test_array_type(self):
d = wsme.types.ArrayType(str)
self.assertEqual(sphinxext.datatypename(d), 'list(str)')
d = wsme.types.ArrayType(ASampleType)
self.assertEqual(sphinxext.datatypename(d), 'list(ASampleType)')

View File

@ -27,6 +27,11 @@ field_re = re.compile(r':(?P<field>\w+)(\s+(?P<name>\w+))?:')
def datatypename(datatype):
if isinstance(datatype, wsme.types.UserType):
return datatype.name
if isinstance(datatype, wsme.types.DictType):
return 'dict(%s: %s)' % (datatypename(datatype.key_type),
datatypename(datatype.value_type))
if isinstance(datatype, wsme.types.ArrayType):
return 'list(%s)' % datatypename(datatype.item_type)
return datatype.__name__