judocss
Version:
The functional CSS toolkit designed for minimal effort and maximum efficiency.
49 lines (37 loc) • 1.11 kB
JavaScript
(function() {
let findKeyCache = {}
function _findKey(regMap, className) {
className = className.replace(/--(small|medium|large|small-only|medium-only)\*?$/, "")
let parts = className.split("-")
if (parts.length <= 1) {
return className
}
let i = parts.length
let key
while (i--) {
parts.pop()
key = parts.join("-") + "-"
if (regMap[key]) {
return key
}
}
}
function findKey(regMap, className) {
findKeyCache[className] = findKeyCache[className] || _findKey(regMap, className)
return findKeyCache[className]
}
const lookup = (className, classMap) => {
let key = findKey(classMap, className)
let entries = classMap[key]
if (entries) {
let i = entries.length
while (i--) {
let entry = entries[i]
if (entry.regex.test(className)) {
return entry
}
}
}
}
module.exports = lookup;
})()