index.js
function _toCamelCase(str) {
  var newString = '';
  var insideParens = false;
  newString += str[0].toLowerCase();
  for (var i = 1; i < str.length; i++) {
    var char = str[i];
    switch (char) {
      case ')':
      case '_':
        break;
      case '(':
        insideParens = true;
        break;
      default:
        if (insideParens) {
          insideParens = false;
          newString += char.toUpperCase();
        } else {
          newString += char;
        }
        break;
    }
  }

  return newString;
}
function _toCamelCase(str) {
  var newString = '';
  var insideParens = false;
  newString += str[0].toLowerCase();
  for (var i = 1; i < str.length; i++) {
    var char = str[i];
    switch (char) {
      case ')':
      case '_':
        break;
      case '(':
        insideParens = true;
        break;
      default:
        if (insideParens) {
          insideParens = false;
          newString += char.toUpperCase();
        } else {
          newString += char;
        }
        break;
    }
  }

  return newString;
}
function _toCamelCase ( str ) { var newString = '' ; var insideParens = false ; newString += str [ 0 ] . toLowerCase ( ) ; for ( var i = 1 ; i < str . length ; i ++ ) { var char = str [ i ] ; switch ( char ) { case ')' : case '_' : break ; case '(' : insideParens = true ; break ; default : if ( insideParens ) { insideParens = false ; newString += char . toUpperCase ( ) ; } else { newString += char ; } break ; } } return newString ; }
quick dirty to handle parens and underscores
quick dirty to handle parens and underscores