Source code for hdlConvertorAst.to.json_debug
from hdlConvertorAst.to.json import ToJson
from hdlConvertorAst.hdlAst._bases import iHdlObj
from hdlConvertorAst.hdlAst._defs import HdlIdDef
from hdlConvertorAst.hdlAst._expr import HdlDirection
[docs]class ToJsonDebug(ToJson):
"""
HdlConverto AST -> json (dict/list/str/int/None composed object)
An invalid object are converted to str using its __repr__()
"""
[docs] def visit_HdlIdDef(self, o):
try:
return ToJson.visit_HdlIdDef(self, o)
except Exception:
if isinstance(o, HdlIdDef):
raise
return repr(o)
[docs] def visit_HdlDirection(self, o):
if not isinstance(o, HdlDirection):
return repr(o)
else:
return super(ToJsonDebug, self).visit_HdlDirection(o)
[docs] def visit_iHdlExpr(self, o):
"""
:type o: iHdlExpr
:return: iHdlExpr
"""
try:
return super(ToJsonDebug, self).visit_iHdlExpr(o)
except Exception:
if o.__class__.__repr__ is iHdlObj.__repr__:
# in order to prevent infinite loop if there is something
# wrong in serializer code itself
raise
return repr(o)