taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 2e26142110b52e7f080c780750cc079c9707ab09
parent d4f1dee2e5a639c5ead5f08c98df2ac0b9f65888
Author: Marc Stibane <marc@taler.net>
Date:   Sat, 12 Oct 2024 08:35:44 +0200

A11y for amounts

Diffstat:
MTalerWallet1/Helper/CurrencySpecification.swift | 13++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/TalerWallet1/Helper/CurrencySpecification.swift b/TalerWallet1/Helper/CurrencySpecification.swift @@ -36,18 +36,18 @@ extension Locale { } extension Amount { - func formatted(_ currencyInfo: CurrencyInfo?, isNegative: Bool, useISO: Bool = false) -> String { + func formatted(_ currencyInfo: CurrencyInfo?, isNegative: Bool, useISO: Bool = false, a11y: String? = nil) -> String { if let currencyInfo { - return currencyInfo.string(for: valueAsFloatTuple, isNegative: isNegative, useISO: useISO) + return currencyInfo.string(for: valueAsFloatTuple, isNegative: isNegative, useISO: useISO, a11y: a11y) } else { return valueStr } } - func formatted(isNegative: Bool, useISO: Bool = false) -> String { + func formatted(isNegative: Bool, useISO: Bool = false, a11y: String? = nil) -> String { let controller = Controller.shared if let currencyInfo = controller.info(for: self.currencyStr) { - return self.formatted(currencyInfo, isNegative: isNegative, useISO: useISO) + return self.formatted(currencyInfo, isNegative: isNegative, useISO: useISO, a11y: a11y) } return self.readableDescription } @@ -172,7 +172,7 @@ public struct CurrencyInfo { } // TODO: use valueAsDecimalTuple instead of valueAsFloatTuple - func string(for valueTuple: (Double, Double), isNegative: Bool, useISO: Bool = false) -> String { + func string(for valueTuple: (Double, Double), isNegative: Bool, useISO: Bool = false, a11y: String? = nil) -> String { formatter.setUseISO(useISO) let (integer, fraction) = valueTuple if let integerStr = formatter.string(for: isNegative ? -integer : integer) { @@ -206,6 +206,9 @@ public struct CurrencyInfo { } } // print(resultStr) + if let a11y { + resultStr.replacingOccurrences(of: decimalSeparator, with: a11y) + } return currencyString(resultStr, useISO: useISO) } // if we arrive here then fractionStr doesn't have a decimal separator. Yikes!