tryAutoComplete method

AutoCompleteResult tryAutoComplete(
  1. String input
)

Try to parse input but return suggestions if parsing failed.

Implementation

AutoCompleteResult tryAutoComplete(String input) {
  // Attempt strict parsing
  final result = parser.expression.end().parse(input);

  if (result is Success) {
    // Already valid & complete, no suggestions needed
    return AutoCompleteResult.complete(result.value);
  }

  if (result is Failure) {
    // PetitParser error messages usually say what was expected
    final expected = result.message;
    final pos = result.position;

    return AutoCompleteResult.incomplete(
      input: input,
      position: pos,
      expected: expected,
    );
  }

  // Fallback
  return AutoCompleteResult.unknown();
}