toString method
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;
}