UNPKG

elements

Version:
55 lines (34 loc) 1.32 kB
/* zen */"use strict" var $ = require("./index"), parse = require("slick/parser"), forEach = require("prime/array/forEach"), map = require("prime/array/map") module.exports = function(expression, doc){ return $(map(parse(expression), function(expression){ var previous, result forEach(expression, function(part, i){ var node = (doc || document).createElement(part.tag) if (part.id) node.id = part.id if (part.classList) node.className = part.classList.join(" ") if (part.attributes) forEach(part.attributes, function(attribute){ node.setAttribute(attribute.name, attribute.value) }) if (part.pseudos) forEach(part.pseudos, function(pseudo){ var n = $(node), method = n[pseudo.name] if (method) method.call(n, pseudo.value) }) if (i === 0){ result = node } else if (part.combinator === " "){ previous.appendChild(node) } else if (part.combinator === "+"){ var parentNode = previous.parentNode if (parentNode) parentNode.appendChild(node) } previous = node }) return result })) }