deserialize method

  1. @override
CountedCloner deserialize(
  1. covariant String data
)
override

Restores a CountedCloner from a string produced by serialize.

Throws DeserializationFormatException if the input format is invalid.

Implementation

@override
CountedCloner deserialize(covariant String data) {
  if (data.length < 5) {
    throw DeserializationFormatException(
      'data length < 5',
      invalidValue: data,
    );
  }
  if (!data.contains(_sDelimiter)) {
    throw DeserializationFormatException('no delimiter', invalidValue: data);
  }
  final parts = data.split(_sDelimiter);
  if (parts.length != 3) {
    throw DeserializationFormatException(
      'malformed parts',
      invalidValue: data,
    );
  }
  final doTypedClone = deserializeBaseFlag(parts.first, prefix: _sName);
  final sizeLimit = int.tryParse(parts[1]);
  if (sizeLimit == null) {
    throw DeserializationFormatException(
      'Invalid int for sizeLimit',
      invalidValue: parts[1],
    );
  }
  final nestLimit = int.tryParse(parts[2]);
  if (nestLimit == null) {
    throw DeserializationFormatException(
      'Invalid int for nestLimit',
      invalidValue: parts[2],
    );
  }
  return CountedCloner._(sizeLimit, nestLimit, doTypedClone);
}