UNPKG

@thi.ng/hiccup

Version:

HTML/SVG/XML serialization of nested data structures, iterables & closures

27 lines (26 loc) 822 B
import { isPlainObject } from "@thi.ng/checks/is-plain-object"; import { isString } from "@thi.ng/checks/is-string"; import { illegalArgs } from "@thi.ng/errors/illegal-arguments"; import { RE_TAG } from "./api.js"; import { mergeEmmetAttribs } from "./attribs.js"; const normalize = (tag) => { let name = tag[0]; let match; const hasAttribs = isPlainObject(tag[1]); const attribs = hasAttribs ? { ...tag[1] } : {}; if (!isString(name) || !(match = RE_TAG.exec(name))) { illegalArgs(`"${name}" is not a valid tag name`); } name = match[1]; mergeEmmetAttribs(attribs, match[2], match[3]); if (tag.length > 1) { tag = tag.slice(hasAttribs ? 2 : 1).filter((x) => x != null); if (tag.length > 0) { return [name, attribs, tag]; } } return [name, attribs]; }; export { normalize };