extension TakeWhile on String {
  String takeWhile(Function charValidator) {
    StringBuffer output = StringBuffer();

    for (final char in this.codeUnits) {
      if (charValidator(char)) output.writeCharCode(char);
      else break;
    }

    return output.toString();
  }
}