From cb8f63222af32ff99a3f1be574344f24595236cb Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 4 Jun 2019 19:04:28 +0200 Subject: [PATCH] Fixing ranking algo --- .../UserInterfaceState.xcuserstate | Bin 61363 -> 62478 bytes TournamentStats/core/Formatters.swift | 29 +++++++++++++++++- .../report/structures/PlayerResult.swift | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/TournamentStats.xcodeproj/project.xcworkspace/xcuserdata/laurent.xcuserdatad/UserInterfaceState.xcuserstate b/TournamentStats.xcodeproj/project.xcworkspace/xcuserdata/laurent.xcuserdatad/UserInterfaceState.xcuserstate index 6572516aa9597b05965c6c7505dfbf8a05c17246..314553606849501551e8f72264e9fcce3b9e4d75 100644 GIT binary patch delta 22472 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

diH1>Xlsdm^WA*@B#%*4= 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 Ocoyy7u;~AEO@9G+iw%DO diff --git a/TournamentStats/core/Formatters.swift b/TournamentStats/core/Formatters.swift index 750df1e..6837626 100644 --- a/TournamentStats/core/Formatters.swift +++ b/TournamentStats/core/Formatters.swift @@ -50,8 +50,35 @@ extension Int { var currencyFormatted: String { return Formatter.currency.string(from: NSNumber(value: self)) ?? "" } + + var rankFormatted: String { + + switch self { + case 11: + return "11th" + case 12: + return "12th" + case 13: + return "13th" + default: + var unit = self + while unit > 10 { + unit /= 10 + } + switch unit { + case 1: + return "\(self)st" + case 2: + return "\(self)nd" + case 3: + return "\(self)rd" + default: + return "\(self)th" + } + } + } } - + extension Double { var currencyFormatted: String { diff --git a/TournamentStats/report/structures/PlayerResult.swift b/TournamentStats/report/structures/PlayerResult.swift index 37a8ce9..f174d3f 100644 --- a/TournamentStats/report/structures/PlayerResult.swift +++ b/TournamentStats/report/structures/PlayerResult.swift @@ -27,7 +27,7 @@ struct PlayerResult : HTMLRepresentable { func html() -> String { var strings: [String] = [] strings.append(self.result.player?.name ?? "") - strings.append("\(self.result.rank)") + strings.append(self.result.rank.rankFormatted) strings.append(result.earnings.currencyFormatted) strings.append("\(tournament.number)") strings.append("\(tournament.buyin.currencyFormatted) \(tournament.name)")