1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- {object} = require 'utila'
- module.exports = self =
- sanitize: (val) ->
- self._toChildren val
- _toChildren: (val) ->
- if object.isBareObject val
- return self._objectToChildren val
- else if Array.isArray val
- return self._arrayToChildren val
- else if val is null or typeof val is 'undefined'
- return []
- else if typeof val in ['string', 'number']
- return [String val]
- else
- throw Error "not a valid child node: `#{val}"
- _objectToChildren: (o) ->
- a = []
- for own key, val of o
- cur = {}
- cur[key] = self.sanitize val
- a.push cur
- a
- _arrayToChildren: (a) ->
- ret = []
- for v in a
- ret.push self._toNode v
- ret
- _toNode: (o) ->
- if typeof o in ['string', 'number']
- return String o
- else if object.isBareObject o
- keys = Object.keys(o)
- if keys.length isnt 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}`"
|