Mercurial > repos > tabletprog
view modules/jsonEncoder.tp @ 338:1458c069c715
Added "value" method to option value and option none. It behaves similarly to value:none, except the none case just propagates the none value and the value case wraps the result in an option value
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 04 Apr 2015 11:54:46 -0700 |
parents | eef8a5cea812 |
children |
line wrap: on
line source
#{ //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: ",") . "}" } } }