Skip to content

Instantly share code, notes, and snippets.

@dead-claudia
Created December 16, 2018 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dead-claudia/4880395520ffdda9a6f54c0f3e8b956e to your computer and use it in GitHub Desktop.
Save dead-claudia/4880395520ffdda9a6f54c0f3e8b956e to your computer and use it in GitHub Desktop.
`classnames`, but emitting an object instead of a string.
var hasOwn = {}.hasOwnProperty
function writeClasses() {
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i]
if (!arg) continue
if (typeof arg === 'string' || typeof arg === 'number') {
this[arg] = true
} else if (typeof arg === 'string') {
if (/^\S+$/g.test(arg)) {
this[arg] = true
} else {
arg = arg.split(" ")
for (var j = 0; j < arg.length; j++) this[arg[i]] = true
}
} else if (Array.isArray(arg)) {
if (arg.length) writeClasses.apply(this, arg)
} else if (typeof arg === 'object') {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
writeClasses.call(this, key)
}
}
}
}
}
function classNames() {
var classes = Object.create(null)
writeClasses.apply(this, arguments)
return classes
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment