Skip to content

Instantly share code, notes, and snippets.

@madx
Created July 4, 2014 13:53
Show Gist options
  • Save madx/1606f802d60fc934887f to your computer and use it in GitHub Desktop.
Save madx/1606f802d60fc934887f to your computer and use it in GitHub Desktop.
DOM.js
/**
* Usage:
*
* DOM("div#notebook")
* DOM("ul.tabs[data-target=notebook]")
*/
var DOM = function(selector, textContent) {
var tokens = selector.split(/\b/)
var tagName = tokens.shift()
var node = document.createElement(tagName)
var token = null
var shiftWord = function() {
var word = ""
var subToken = tokens.shift()
while(subToken && subToken.match(/^(\w+|-)$/) !== null) {
word += subToken
subToken = tokens.shift()
}
tokens.unshift(subToken)
return word
}
while(token = tokens.shift()) {
switch(token) {
case "#":
node.setAttribute("id", shiftWord())
break
case ".":
node.classList.add(shiftWord())
break
case "[":
var attrName = shiftWord()
tokens.shift()
var attrValue = shiftWord()
tokens.shift()
node.setAttribute(attrName, attrValue)
break
default:
break
}
}
if (textContent) {
node.textContent = textContent
}
return node
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment