parse_key<KEY> function

KEY parse_key<KEY>({
  1. required AnsiParserInputBuffer buffer,
  2. required KeyDelegate<KEY, int> delegate,
})

May throw ByteReadExceptionTooSmall if any given byte is smaller than _stdin_end_of_file_indicator.

Implementation

// region impl
KEY parse_key<KEY>({
  required final AnsiParserInputBuffer buffer,
  required final KeyDelegate<KEY, int> delegate,
}) {
  final first_valid_byte = () {
    int _read_byte = 0;
    while (_read_byte <= 0) {
      _read_byte = buffer.read_byte();
      if (_read_byte < _stdin_end_of_file_indicator) {
        throw _ByteReadExceptionTooSmallImpl(
          value: _read_byte,
        );
      } else if (_read_byte > _byte_size) {
        // TODO throw here?
        return _read_byte;
      }
    }
    return _read_byte;
  }();
  return _ansi_parser_read_key(
    first_byte: first_valid_byte,
    next_byte: buffer.read_byte,
    delegate: delegate,
    context: first_valid_byte,
  );
}