Mercurial > repos > tabletprog
diff modules/jsonEncoder.tp @ 329:eef8a5cea812
Use a smarter algorithm for calculating module init order and break some circular module dependencies in the standard library
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 28 Mar 2015 13:26:03 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/jsonEncoder.tp Sat Mar 28 13:26:03 2015 -0700 @@ -0,0 +1,22 @@ +#{ + //this module exists to break a circular dependency between the json module + //and container types like dictionaries + encode <- :value { + if: (object does: value understand?: "jsonEncode") { + value jsonEncode + } else: { + toEncode <- #[] + if: (object does: value understand?: "serializeFields") { + toEncode <- value serializeFields + } else: { + toEncode <- object propertiesOf: value + } + parts <- #[] + foreach: toEncode :idx field { + fieldVal <- object sendMessage: field to: value + parts append: (field jsonEncode) . ":" . (encode: fieldVal) + } + "{" . (parts join: ",") . "}" + } + } +} \ No newline at end of file