UNPKG

926 BJavaScriptView Raw
1module.exports = function h (tag, attr, children) {
2 if (Array.isArray(attr)) {
3 children = attr
4 attr = {}
5 }
6 if (!children) children = []
7 if (!Array.isArray(children)) children = [children]
8 if (!attr) attr = {}
9
10 var open = '<' + tag.replace(/[\/!]$/, '')
11 var kattr = Object.keys(attr)
12 if (kattr.length) {
13 open += ' ' + kattr.map(function (k) {
14 return enc(k) + '="' + enc(attr[k]) + '"'
15 }).join(' ')
16 }
17 if (/^\?/.test(tag)) {
18 return open + '?>' + children.join('')
19 } else if (/!$/.test(tag)) {
20 return open + '>' + children.join('')
21 } else if (!children.length) { // self-closing
22 return open + '/>'
23 } else {
24 return open + '>' + children.join('') + '</' + tag + '>'
25 }
26}
27
28function enc (str) {
29 if (typeof str !== 'string') str = String(str)
30 return str
31 .replace(/&/g, '&amp;')
32 .replace(/</g, '&lt;')
33 .replace(/>/g, '&gt;')
34 .replace(/"/g, '&#34;')
35}