Manual Reference Source Test

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,
};