marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
45 lines (37 loc) • 935 B
JavaScript
;
var camelToDashLookup = Object.create(null);
var dashToCamelLookup = Object.create(null);
/**
* Helper for converting camelCase to dash-case.
*/
exports.bk_ = function camelToDashCase(name) {
var nameDashed = camelToDashLookup[name];
if (!nameDashed) {
nameDashed = camelToDashLookup[name] = name.
replace(/([A-Z])/g, "-$1").
toLowerCase();
if (nameDashed !== name) {
dashToCamelLookup[nameDashed] = name;
}
}
return nameDashed;
};
/**
* Helper for converting dash-case to camelCase.
*/
exports.bl_ = function dashToCamelCase(name) {
var nameCamel = dashToCamelLookup[name];
if (!nameCamel) {
nameCamel = dashToCamelLookup[name] = name.replace(
/-([a-z])/g,
matchToUpperCase
);
if (nameCamel !== name) {
camelToDashLookup[nameCamel] = name;
}
}
return nameCamel;
};
function matchToUpperCase(_, char) {
return char.toUpperCase();
}