parseUtf8Bytes method
GeneratedTreeSitterTree
parseUtf8Bytes(
- Uint8List bytes, {
- GeneratedTreeSitterTree? oldTree,
- Iterable<
TreeSitterInputEdit> edits = const [], - List<
TreeSitterTableRange> includedRanges = const [], - TreeSitterParserRuntimeHooks? runtimeHooks,
Parses an exact UTF-8 byte buffer without first round-tripping it through a Dart String. Native Tree-sitter's parser input is byte-oriented, and malformed UTF-8 must retain its physical byte offsets for recovery.
Implementation
GeneratedTreeSitterTree parseUtf8Bytes(
Uint8List bytes, {
GeneratedTreeSitterTree? oldTree,
Iterable<TreeSitterInputEdit> edits = const [],
List<TreeSitterTableRange> includedRanges = const [],
TreeSitterParserRuntimeHooks? runtimeHooks,
}) {
final resuming = _activeParseSession != null;
_runtimeHooks = runtimeHooks;
_parseClock = runtimeHooks != null && runtimeHooks.timeout > Duration.zero
? (Stopwatch()..start())
: null;
_progressOperationCount = 0;
_activeIncludedRanges = includedRanges;
if (!resuming) {
_initializeNewParse(oldTree, edits, includedRanges);
}
var halted = false;
try {
final source = utf8.decode(bytes, allowMalformed: true);
return _parseWithRecovery(source, Uint8List.fromList(bytes));
} on GeneratedTreeSitterParseHalted {
halted = true;
rethrow;
} finally {
if (!halted) reset();
_runtimeHooks = null;
_parseClock = null;
}
}