marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
46 lines (37 loc) • 971 B
JavaScript
;
var camelToDashLookup = Object.create(null);
var dashToCamelLookup = Object.create(null);
/**
* Helper for converting camelCase to dash-case.
*/
exports.___camelToDashCase = 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.___dashToCamelCase = 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();
}