camelize function

String camelize(
  1. String string, [
  2. bool lower = false
])

Returns a string in the form "UpperCamelCase" or "lowerCamelCase".

Example: print(camelize("dart_vm")); => DartVm

Implementation

String camelize(String string, [bool lower = false]) {
  if (string.isEmpty) {
    return string;
  }

  string = string.toLowerCase();
  var capitlize = true;
  var position = 0;
  var remove = false;
  var sb = StringBuffer();
  final characters = Characters(string);
  for (final s in characters) {
    final runes = s.runes;
    var flag = 0;
    if (runes.length == 1) {
      var c = runes.first;
      if (c <= _ASCII_END) {
        flag = _ascii[c];
      }
    }

    if (capitlize && flag & _ALPHA != 0) {
      if (lower && position == 0) {
        sb.write(s);
      } else {
        sb.write(s.toUpperCase());
      }

      capitlize = false;
      remove = true;
      position++;
    } else {
      if (flag & _UNDERSCORE != 0) {
        if (!remove) {
          sb.write(s);
          remove = true;
        }

        capitlize = true;
      } else {
        if (flag & _ALPHA_NUM != 0) {
          capitlize = false;
          remove = true;
        } else {
          capitlize = true;
          remove = false;
          position = 0;
        }

        sb.write(s);
      }
    }
  }

  return sb.toString();
}