src/utilities/FormatUtility.js
/**
* Determines if the string is an email address. Based on RFC 5322.
*
* @see https://www.w3.org/TR/html5/forms.html#valid-e-mail-address
* @param {String} email - Email address to see if it is one.
* @return {Boolean} - Either true or false
*/
function isEmail(email) {
const re = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;
return re.test(email);
}
/**
* Convert string from camel to snake case
*
* @param {String} key - Convert the string to snake case.
* @return {String} - String in snake case
*/
function camelToSnake(key) {
return key.replace(/([A-Z])/g, '_$1').toLowerCase();
}
/**
* Convert string from kebab to camel case
*
* @param {String} key - Convert the string to camel case.
* @return {String} - String in camel case
*/
function kebabToCamel(key) {
return key.replace(/(-\w)/g, m => m[1].toUpperCase());
}
/**
* Convert string from kebab to snake case
*
* @param {String} key - Convert the string to snake case.
* @return {String} - String in snake case
*/
function kebabToSnake(key) {
return key.replace(/(-)/g, '_').toLowerCase();
}
/**
* Converts object to a URI to be used with Clinical6
*
* @param {Any} obj - Object to convert to uri
* @param {String} prefix - String prefix for each parameter
*/
function objectToURI(obj, prefix = '') {
return Object.keys(obj).map((k) => {
let _return = '';
// check if primitive
if (obj[k] !== Object(obj[k])) {
_return = (prefix === '') ? `${k}=${obj[k]}` : `${prefix}[${k}]=${obj[k]}`;
} else {
_return = (prefix === '') ? objectToURI(obj[k], k) : objectToURI(obj[k], `${prefix}[${k}]`);
}
return _return;
}).join('&');
}
/**
* Convert string from snake to camel case
*
* @param {String} key - Convert the string to camel case.
* @return {String} - String in camel case
*/
function snakeToCamel(key) {
return key.replace(/(_\w)/g, m => m[1].toUpperCase());
}
/**
* Convert string from any to camel case
*
* @param {String} key - Convert the string to camel case.
* @return {String} - String in camel case
*/
function stringToCamel(key) {
return kebabToCamel(snakeToCamel(key));
}
/**
* Convert string from any to snake case
*
* @param {String} key - Convert the string to snake case.
* @return {String} - String in snake case
*/
function stringToSnake(key) {
return kebabToSnake(camelToSnake(key));
}
export {
isEmail,
camelToSnake,
kebabToCamel,
kebabToSnake,
objectToURI,
snakeToCamel,
stringToCamel,
stringToSnake,
};