TreeSitterInputEdit.fromMessage constructor

TreeSitterInputEdit.fromMessage(
  1. Map<Object?, Object?> message
)

Implementation

factory TreeSitterInputEdit.fromMessage(Map<Object?, Object?> message) {
  int integer(String key) {
    final value = message[key];
    if (value is! int) throw FormatException('$key must be an int');
    return value;
  }

  int? optionalInteger(String key) {
    final value = message[key];
    if (value == null) return null;
    if (value is! int) throw FormatException('$key must be an int');
    return value;
  }

  final insertedText = message['insertedText'];
  if (insertedText is! String) {
    throw const FormatException('insertedText must be a String');
  }
  return TreeSitterInputEdit(
    startByte: integer('startByte'),
    oldEndByte: integer('oldEndByte'),
    newEndByte: integer('newEndByte'),
    startPosition: TreeSitterPoint(
      integer('startRow'),
      integer('startColumn'),
    ),
    oldEndPosition: TreeSitterPoint(
      integer('oldEndRow'),
      integer('oldEndColumn'),
    ),
    newEndPosition: TreeSitterPoint(
      integer('newEndRow'),
      integer('newEndColumn'),
    ),
    startUtf16: optionalInteger('startUtf16'),
    oldEndUtf16: optionalInteger('oldEndUtf16'),
    newEndUtf16: optionalInteger('newEndUtf16'),
    insertedText: insertedText,
  );
}