setPairXY method

P? setPairXY(
  1. P pair,
  2. X x,
  3. Y y
)

Implementation

P? setPairXY(P pair, X x, Y y) {
  if (pair == null) {
    return null;
  } else if (pair is List) {
    if (x.runtimeType == y.runtimeType) {
      pair[0] = x;
      pair[1] = y;
      return null;
    } else {
      return [x, y] as P;
    }
  } else if (pair is Map) {
    var keyX = findKeyName(pair as Map<String, dynamic>, xKeys, true)!;
    var keyY = findKeyName(pair, yKeys, true)!;
    pair[keyX] = x;
    pair[keyY] = y;
    return null;
  } else if (pair is Pair) {
    return Pair(x, y) as P;
  } else if (pair is String) {
    String s = pair;

    String? delimiter = '';

    s.splitMapJoin(stringPairDelimiterPattern,
        onNonMatch: (p) => '',
        onMatch: (m) {
          delimiter = m[0];
          return '';
        });

    return '$x$delimiter$y' as P;
  } else {
    throw UnsupportedError(
        "Can't handle pair of type ${pair.runtimeType}: $pair");
  }
}