initial commit

This commit is contained in:
2026-01-08 19:16:32 +00:00
commit d89aedd5af
121 changed files with 8509 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
//
// WeatherKitConditionCoding.swift
// iris
//
// Created by Codex.
//
import Foundation
import WeatherKit
extension WeatherKit.WeatherCondition {
func irisScreamingCase() -> String {
Self.upperSnake(from: rawValue)
}
static func irisDecode(_ value: String) -> WeatherKit.WeatherCondition? {
let trimmed = value.trimmingCharacters(in: .whitespacesAndNewlines)
guard !trimmed.isEmpty else { return nil }
if trimmed.uppercased() == "UNKNOWN" { return nil }
if let direct = WeatherKit.WeatherCondition(rawValue: trimmed) { return direct }
let lowerCamel = lowerCamel(fromScreamingOrSnake: trimmed)
if let mapped = WeatherKit.WeatherCondition(rawValue: lowerCamel) { return mapped }
return nil
}
private static func upperSnake(from value: String) -> String {
var out = ""
out.reserveCapacity(value.count + 8)
for scalar in value.unicodeScalars {
if CharacterSet.uppercaseLetters.contains(scalar), !out.isEmpty {
out.append("_")
}
out.append(String(scalar).uppercased())
}
return out
}
private static func lowerCamel(fromScreamingOrSnake value: String) -> String {
let parts = value
.split(separator: "_")
.map { $0.lowercased() }
guard let first = parts.first else { return value }
let rest = parts.dropFirst().map { $0.prefix(1).uppercased() + $0.dropFirst() }
return ([String(first)] + rest).joined()
}
}