diff --git a/Sources/OversizeCore/Extensions/Locale/Currency+Extension.swift b/Sources/OversizeCore/Extensions/Locale/Currency+Extension.swift index 16ca6fd..e06f2f1 100644 --- a/Sources/OversizeCore/Extensions/Locale/Currency+Extension.swift +++ b/Sources/OversizeCore/Extensions/Locale/Currency+Extension.swift @@ -1,29 +1,50 @@ // // Copyright © 2023 Alexander Romanov -// CurrencyExtension.swift, created on 15.07.2023 +// Currency+Extension.swift, created on 15.07.2023 // import Foundation @available(macOS 13, iOS 16, tvOS 16, watchOS 9, *) public extension Locale.Currency { - var dispalyName: String? { + var displayName: String? { Locale.current.localizedString(forCurrencyCode: identifier) } - var dispalyIdentifier: String? { + var displayIdentifier: String? { identifier.uppercased() } - var dispalyLocalizedSymbol: String? { + var displayLocalizedSymbol: String? { Locale.current.localizedCurrencySymbol(forCurrencyCode: identifier) } - var dispalySymbol: String? { + var displaySymbol: String? { let allLocalCurrencies = Locale.availableIdentifiers.compactMap { Locale(identifier: $0) } return allLocalCurrencies.first { $0.currency == self }?.currencySymbol } + // MARK: - Deprecated aliases for backward compatibility + @available(*, deprecated, renamed: "displayName", message: "Use displayName instead") + var dispalyName: String? { + displayName + } + + @available(*, deprecated, renamed: "displayIdentifier", message: "Use displayIdentifier instead") + var dispalyIdentifier: String? { + displayIdentifier + } + + @available(*, deprecated, renamed: "displayLocalizedSymbol", message: "Use displayLocalizedSymbol instead") + var dispalyLocalizedSymbol: String? { + displayLocalizedSymbol + } + + @available(*, deprecated, renamed: "displaySymbol", message: "Use displaySymbol instead") + var dispalySymbol: String? { + displaySymbol + } + var locale: Locale? { let allLocalCurrencies = Locale.availableIdentifiers.compactMap { Locale(identifier: $0) } return allLocalCurrencies.first { $0.currency == self } @@ -33,6 +54,6 @@ public extension Locale.Currency { Locale.availableIdentifiers .compactMap { Locale(identifier: $0).currency } .removeDuplicates() - .sorted { $0.dispalyName ?? "" < $1.dispalyName ?? "" } + .sorted { $0.displayName ?? "" < $1.displayName ?? "" } } } diff --git a/Sources/OversizeCore/Extensions/Locale/Locale+Extension.swift b/Sources/OversizeCore/Extensions/Locale/Locale+Extension.swift index 9f10645..44766f8 100644 --- a/Sources/OversizeCore/Extensions/Locale/Locale+Extension.swift +++ b/Sources/OversizeCore/Extensions/Locale/Locale+Extension.swift @@ -1,6 +1,6 @@ // // Copyright © 2023 Alexander Romanov -// LocaleExtension.swift, created on 15.07.2023 +// Locale+Extension.swift, created on 15.07.2023 // import Foundation diff --git a/Sources/OversizeCore/Extensions/Swift/Date+Extension.swift b/Sources/OversizeCore/Extensions/Swift/Date+Extension.swift index 858800c..6b222cf 100644 --- a/Sources/OversizeCore/Extensions/Swift/Date+Extension.swift +++ b/Sources/OversizeCore/Extensions/Swift/Date+Extension.swift @@ -66,7 +66,7 @@ public extension Date { Calendar.current.date(byAdding: .day, value: -30, to: self)! } - var halfYarBefore: Date { + var halfYearBefore: Date { Calendar.current.date(byAdding: .month, value: -6, to: self)! } diff --git a/Sources/OversizeCore/Extensions/Swift/String+Extension.swift b/Sources/OversizeCore/Extensions/Swift/String+Extension.swift index 9021e92..e3259b7 100644 --- a/Sources/OversizeCore/Extensions/Swift/String+Extension.swift +++ b/Sources/OversizeCore/Extensions/Swift/String+Extension.swift @@ -34,7 +34,7 @@ public extension String { var urlEncode: String { let originalString = self let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) - return escapedString! + return escapedString ?? originalString } var url: URL? { @@ -83,7 +83,7 @@ public extension String { } var data: Data { - self.data(using: String.Encoding.utf8)! + self.data(using: String.Encoding.utf8) ?? Data() } var range: NSRange { @@ -114,7 +114,9 @@ public extension String { return matches.map { var array: [String] = [] for rangeIndex in 0 ... max(0, $0.numberOfRanges - 1) { - array.append(String(self[Range($0.range(at: rangeIndex), in: self)!])) + if let range = Range($0.range(at: rangeIndex), in: self) { + array.append(String(self[range])) + } } return array } diff --git a/Sources/OversizeCore/Global/Delay.swift b/Sources/OversizeCore/Global/Delay.swift index b16e09b..7a3ffd7 100644 --- a/Sources/OversizeCore/Global/Delay.swift +++ b/Sources/OversizeCore/Global/Delay.swift @@ -14,7 +14,9 @@ public func delay(_ time: ContinuousClock.Duration, action: @Sendable @escaping do { try await Task.sleep(for: time) await action() - } catch {} + } catch { + logError("Delay function failed", error: error) + } } @available(iOS 16.0, tvOS 16.0, watchOS 9.0, macOS 13.0, *) @@ -22,13 +24,19 @@ public func delayMain(_ time: ContinuousClock.Duration, action: @MainActor @Send do { try await Task.sleep(for: time) await action() - } catch {} + } catch { + logError("DelayMain function failed", error: error) + } } @available(iOS 16.0, tvOS 16.0, watchOS 9.0, macOS 13.0, *) public func delayDetached(_ time: ContinuousClock.Duration, action: @Sendable @escaping () -> Void) { Task.detached { - try await Task.sleep(for: time) - action() + do { + try await Task.sleep(for: time) + action() + } catch { + logError("DelayDetached function failed", error: error) + } } }