toString method

  1. @override
String toString()
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString() {
  String result = '';

  int start = -1;
  for (int i = 0; i < _ranks.length; ++i) {
    if (_pocketRankPairs.contains(RankPair.pocket(_ranks[i]))) {
      if (start == -1) {
        start = i;
      }
    }

    if (start != -1 &&
        (i == _ranks.length - 1 ||
            !_pocketRankPairs.contains(RankPair.pocket(_ranks[i + 1])))) {
      if (start == i) {
        result += '${_ranks[i]}${_ranks[i]}';
      } else if (start == 0) {
        result += '${_ranks[i]}${_ranks[i]}+';
      } else {
        result += '${_ranks[start]}${_ranks[start]}-${_ranks[i]}${_ranks[i]}';
      }

      start = -1;
    }
  }

  for (int h = 0; h < _ranks.length - 1; ++h) {
    int suitedStart = -1;
    int ofsuitStart = -1;

    for (int k = h + 1; k < _ranks.length; ++k) {
      if (_suitedRankPairs.contains(RankPair.suited(_ranks[h], _ranks[k])) &&
          suitedStart == -1) {
        suitedStart = k;
      }

      if (suitedStart != -1 &&
          (k == _ranks.length - 1 ||
              !_suitedRankPairs
                  .contains(RankPair.suited(_ranks[h], _ranks[k + 1])))) {
        if (suitedStart == k) {
          result += '${_ranks[h]}${_ranks[k]}s';
        } else if (suitedStart == h + 1) {
          result += '${_ranks[h]}${_ranks[k]}s+';
        } else {
          result +=
              '${_ranks[h]}${_ranks[suitedStart]}s-${_ranks[h]}${_ranks[k]}s';
        }

        suitedStart = -1;
      }
    }

    for (int k = h + 1; k < _ranks.length; ++k) {
      if (_ofsuitRankPairs.contains(RankPair.ofsuit(_ranks[h], _ranks[k])) &&
          ofsuitStart == -1) {
        ofsuitStart = k;
      }

      if (ofsuitStart != -1 &&
          (k == _ranks.length - 1 ||
              !_ofsuitRankPairs
                  .contains(RankPair.ofsuit(_ranks[h], _ranks[k + 1])))) {
        if (ofsuitStart == k) {
          result += '${_ranks[h]}${_ranks[k]}o';
        } else if (ofsuitStart == h + 1) {
          result += '${_ranks[h]}${_ranks[k]}o+';
        } else {
          result +=
              '${_ranks[h]}${_ranks[ofsuitStart]}o-${_ranks[h]}${_ranks[k]}o';
        }

        ofsuitStart = -1;
      }
    }
  }

  for (final cardPair in _individualCardPairs) {
    result += cardPair.toSortedString();
  }

  return result;
}