Skip to content

Instantly share code, notes, and snippets.

@denchistyakov
Created December 11, 2018 14:35
Show Gist options
  • Save denchistyakov/2639335390b637749de5baafccc73e23 to your computer and use it in GitHub Desktop.
Save denchistyakov/2639335390b637749de5baafccc73e23 to your computer and use it in GitHub Desktop.
/**
* @param {string} varName Исходное имя переменной в змеинном_регистре
* @return {string} Имя переменной преобразованное к нижнемуВерблюжемуРегистру
*/
function convertCase(varName) {
let underscores = '';
if (varName[0] === '_') {
for (let i = 0; i < varName.length; i++) {
const char = varName[i];
if (char !== '_') {
break;
}
underscores += char;
}
}
const splitedStr = varName.slice(underscores.length).split('_');
for (let i = 1; i < splitedStr.length; i++) {
const item = splitedStr[i];
splitedStr[i] = item[0].toUpperCase() + item.slice(1);
}
return underscores + splitedStr.join('');
}
console.log(
convertCase('request_animation_frame'), // 'requestAnimationFrame'
convertCase('page_x_offset'), // 'pageXOffset'
convertCase('__canvas_rendering_context_2_d') // '__canvasRenderingContext2D'
);
console.log(
convertCase('request_animation_frame') === 'requestAnimationFrame',
convertCase('page_x_offset') === 'pageXOffset',
convertCase('__canvas_rendering_context_2_d') === '__canvasRenderingContext2D'
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment