@vendasta/store
Version:
Components and data for Store
33 lines • 5.11 kB
JavaScript
// @dynamic
export class CaseTransform {
static snakeToCamelCase(value) {
return value
? value
.replace(new RegExp(/_/g), ' ')
.replace(/\b\w/g, (l) => l.toUpperCase())
.replace(/\b\w/, (l) => l.toLowerCase())
.replace(/\s/g, '')
: value;
}
static lowerToTitleCase(value) {
// Code taken from https://github.com/gouch/to-title-case to support the proper spec.
const smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;
return value
? value.replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g, (match, index, title) => {
if (index > 0 &&
index + match.length !== title.length &&
match.search(smallWords) > -1 &&
title.charAt(index - 2) !== ':' &&
(title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') &&
title.charAt(index - 1).search(/[^\s-]/) < 0) {
return match.toLowerCase();
}
if (match.substr(1).search(/[A-Z]|\../) > -1) {
return match;
}
return match.charAt(0).toUpperCase() + match.substr(1);
})
: value;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS10cmFuc2Zvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvc2hhcmVkL2Nhc2UtdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVc7QUFDWCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYTtRQUNuQyxPQUFPLEtBQUs7WUFDVixDQUFDLENBQUMsS0FBSztpQkFDRixPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO2lCQUM5QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3hDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDdkMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYTtRQUNuQyxxRkFBcUY7UUFDckYsTUFBTSxVQUFVLEdBQUcsNEVBQTRFLENBQUM7UUFFaEcsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN6RSxJQUNFLEtBQUssR0FBRyxDQUFDO29CQUNULEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNO29CQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRztvQkFDL0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDL0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFDNUM7b0JBQ0EsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQzVCO2dCQUVELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQzVDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIENhc2VUcmFuc2Zvcm0ge1xuICBzdGF0aWMgc25ha2VUb0NhbWVsQ2FzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgICAgID8gdmFsdWVcbiAgICAgICAgICAucmVwbGFjZShuZXcgUmVnRXhwKC9fL2cpLCAnICcpXG4gICAgICAgICAgLnJlcGxhY2UoL1xcYlxcdy9nLCAobCkgPT4gbC50b1VwcGVyQ2FzZSgpKVxuICAgICAgICAgIC5yZXBsYWNlKC9cXGJcXHcvLCAobCkgPT4gbC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICA6IHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGxvd2VyVG9UaXRsZUNhc2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ29kZSB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9nb3VjaC90by10aXRsZS1jYXNlIHRvIHN1cHBvcnQgdGhlIHByb3BlciBzcGVjLlxuICAgIGNvbnN0IHNtYWxsV29yZHMgPSAvXihhfGFufGFuZHxhc3xhdHxidXR8Ynl8ZW58Zm9yfGlmfGlufG5vcnxvZnxvbnxvcnxwZXJ8dGhlfHRvfHZzP1xcLj98dmlhKSQvaTtcblxuICAgIHJldHVybiB2YWx1ZVxuICAgICAgPyB2YWx1ZS5yZXBsYWNlKC9bQS1aYS16MC05XFx1MDBDMC1cXHUwMEZGXStbXlxccy1dKi9nLCAobWF0Y2gsIGluZGV4LCB0aXRsZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGluZGV4ID4gMCAmJlxuICAgICAgICAgICAgaW5kZXggKyBtYXRjaC5sZW5ndGggIT09IHRpdGxlLmxlbmd0aCAmJlxuICAgICAgICAgICAgbWF0Y2guc2VhcmNoKHNtYWxsV29yZHMpID4gLTEgJiZcbiAgICAgICAgICAgIHRpdGxlLmNoYXJBdChpbmRleCAtIDIpICE9PSAnOicgJiZcbiAgICAgICAgICAgICh0aXRsZS5jaGFyQXQoaW5kZXggKyBtYXRjaC5sZW5ndGgpICE9PSAnLScgfHwgdGl0bGUuY2hhckF0KGluZGV4IC0gMSkgPT09ICctJykgJiZcbiAgICAgICAgICAgIHRpdGxlLmNoYXJBdChpbmRleCAtIDEpLnNlYXJjaCgvW15cXHMtXS8pIDwgMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1hdGNoLnN1YnN0cigxKS5zZWFyY2goL1tBLVpdfFxcLi4vKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbWF0Y2guc3Vic3RyKDEpO1xuICAgICAgICB9KVxuICAgICAgOiB2YWx1ZTtcbiAgfVxufVxuIl19