mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
32 lines
1.1 KiB
Swift
32 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
enum PlatformLabelFormatter {
|
|
static func parse(_ raw: String) -> (prefix: String, version: String?) {
|
|
let trimmed = raw.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
if trimmed.isEmpty { return ("", nil) }
|
|
let parts = trimmed.split(whereSeparator: { $0 == " " || $0 == "\t" }).map(String.init)
|
|
let prefix = parts.first?.lowercased() ?? ""
|
|
let versionToken = parts.dropFirst().first
|
|
return (prefix, versionToken)
|
|
}
|
|
|
|
static func pretty(_ raw: String) -> String? {
|
|
let (prefix, version) = self.parse(raw)
|
|
if prefix.isEmpty { return nil }
|
|
let name: String = switch prefix {
|
|
case "macos": "macOS"
|
|
case "ios": "iOS"
|
|
case "ipados": "iPadOS"
|
|
case "tvos": "tvOS"
|
|
case "watchos": "watchOS"
|
|
default: prefix.prefix(1).uppercased() + prefix.dropFirst()
|
|
}
|
|
guard let version, !version.isEmpty else { return name }
|
|
let parts = version.split(separator: ".").map(String.init)
|
|
if parts.count >= 2 {
|
|
return "\(name) \(parts[0]).\(parts[1])"
|
|
}
|
|
return "\(name) \(version)"
|
|
}
|
|
}
|