// Generated by CoffeeScript 1.12.7 var object, self, hasProp = {}.hasOwnProperty; object = require('utila').object; module.exports = self = { sanitize: function(val) { return self._toChildren(val); }, _toChildren: function(val) { var ref; if (object.isBareObject(val)) { return self._objectToChildren(val); } else if (Array.isArray(val)) { return self._arrayToChildren(val); } else if (val === null || typeof val === 'undefined') { return []; } else if ((ref = typeof val) === 'string' || ref === 'number') { return [String(val)]; } else { throw Error("not a valid child node: `" + val); } }, _objectToChildren: function(o) { var a, cur, key, val; a = []; for (key in o) { if (!hasProp.call(o, key)) continue; val = o[key]; cur = {}; cur[key] = self.sanitize(val); a.push(cur); } return a; }, _arrayToChildren: function(a) { var i, len, ret, v; ret = []; for (i = 0, len = a.length; i < len; i++) { v = a[i]; ret.push(self._toNode(v)); } return ret; }, _toNode: function(o) { var key, keys, obj, ref; if ((ref = typeof o) === 'string' || ref === 'number') { return String(o); } else if (object.isBareObject(o)) { keys = Object.keys(o); if (keys.length !== 1) { throw Error("a node must only have one key as tag name"); } key = keys[0]; obj = {}; obj[key] = self._toChildren(o[key]); return obj; } else { throw Error("not a valid node: `" + o + "`"); } } };