41 lines
1.0 KiB
Swift
41 lines
1.0 KiB
Swift
import Foundation
|
|
|
|
struct CsvConverter {
|
|
|
|
private let dateFormatter: DateFormatter
|
|
|
|
init() {
|
|
dateFormatter = .init()
|
|
dateFormatter.dateStyle = .short
|
|
dateFormatter.timeStyle = .medium
|
|
}
|
|
|
|
private var header: String {
|
|
"Index;Date;Sensor 0;Sensor 1\n"
|
|
}
|
|
|
|
func convert(measurements: [TemperatureMeasurement]) -> String {
|
|
header + measurements.enumerated().map { (index, measurement) -> String in
|
|
let parts: [String] = [
|
|
"\(index)",
|
|
dateFormatter.string(from: measurement.date),
|
|
convert(measurement.sensor0),
|
|
convert(measurement.sensor1)
|
|
]
|
|
|
|
return parts.joined(separator: ";")
|
|
}.joined(separator: "\n")
|
|
}
|
|
|
|
private func convert(_ value: TemperatureValue) -> String {
|
|
switch value {
|
|
case .notFound:
|
|
return ""
|
|
case .invalidMeasurement:
|
|
return "?"
|
|
case .value(let value):
|
|
return String(format:"%.1f", value)
|
|
}
|
|
}
|
|
}
|