66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright (c) 2016, Contributors
 | 
						|
 * SPDX-License-Identifier: ISC
 | 
						|
 */
 | 
						|
export function camelCase(str) {
 | 
						|
    // Handle the case where an argument is provided as camel case, e.g., fooBar.
 | 
						|
    // by ensuring that the string isn't already mixed case:
 | 
						|
    const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();
 | 
						|
    if (!isCamelCase) {
 | 
						|
        str = str.toLowerCase();
 | 
						|
    }
 | 
						|
    if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {
 | 
						|
        return str;
 | 
						|
    }
 | 
						|
    else {
 | 
						|
        let camelcase = '';
 | 
						|
        let nextChrUpper = false;
 | 
						|
        const leadingHyphens = str.match(/^-+/);
 | 
						|
        for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {
 | 
						|
            let chr = str.charAt(i);
 | 
						|
            if (nextChrUpper) {
 | 
						|
                nextChrUpper = false;
 | 
						|
                chr = chr.toUpperCase();
 | 
						|
            }
 | 
						|
            if (i !== 0 && (chr === '-' || chr === '_')) {
 | 
						|
                nextChrUpper = true;
 | 
						|
            }
 | 
						|
            else if (chr !== '-' && chr !== '_') {
 | 
						|
                camelcase += chr;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return camelcase;
 | 
						|
    }
 | 
						|
}
 | 
						|
export function decamelize(str, joinString) {
 | 
						|
    const lowercase = str.toLowerCase();
 | 
						|
    joinString = joinString || '-';
 | 
						|
    let notCamelcase = '';
 | 
						|
    for (let i = 0; i < str.length; i++) {
 | 
						|
        const chrLower = lowercase.charAt(i);
 | 
						|
        const chrString = str.charAt(i);
 | 
						|
        if (chrLower !== chrString && i > 0) {
 | 
						|
            notCamelcase += `${joinString}${lowercase.charAt(i)}`;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            notCamelcase += chrString;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return notCamelcase;
 | 
						|
}
 | 
						|
export function looksLikeNumber(x) {
 | 
						|
    if (x === null || x === undefined)
 | 
						|
        return false;
 | 
						|
    // if loaded from config, may already be a number.
 | 
						|
    if (typeof x === 'number')
 | 
						|
        return true;
 | 
						|
    // hexadecimal.
 | 
						|
    if (/^0x[0-9a-f]+$/i.test(x))
 | 
						|
        return true;
 | 
						|
    // don't treat 0123 as a number; as it drops the leading '0'.
 | 
						|
    if (/^0[^.]/.test(x))
 | 
						|
        return false;
 | 
						|
    return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
 | 
						|
}
 |