Implemented the DateAdapter and the SizeAdapter adapter for the Browse module.

This commit is contained in:
Javier Cicchelli 2022-12-16 00:09:50 +01:00
parent 74b40ae5c3
commit 6b1089235a
2 changed files with 103 additions and 0 deletions

View File

@ -0,0 +1,49 @@
//
// DateAdapter.swift
// Browse
//
// Created by Javier Cicchelli on 15/12/2022.
// Copyright © 2022 Röck+Cöde. All rights reserved.
//
import Foundation
struct DateAdapter {
// MARK: Properties
private let dateFormatter: DateFormatter = .dateTimeFormatter
// MARK: Functions
func callAsFunction(value: Date?) -> String {
if let value {
return dateFormatter.string(from: value)
} else {
return .Constants.noValue
}
}
}
// MARK: - DateFormatter+Formats
private extension DateFormatter {
static let dateTimeFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .long
formatter.timeStyle = .short
formatter.locale = .current
return formatter
}()
}
// MARK: - String+Constants
private extension String {
enum Constants {
static let noValue = "-"
}
}

View File

@ -0,0 +1,54 @@
//
// SizeAdapter.swift
// Browse
//
// Created by Javier Cicchelli on 15/12/2022.
// Copyright © 2022 Röck+Cöde. All rights reserved.
//
import Foundation
struct SizeAdapter {
// MARK: Properties
private let measurementFormatter: MeasurementFormatter = .informationSizeFormatter
// MARK: Functions
func callAsFunction(value: Int?) -> String {
guard let value else { return .Constants.noValue }
var sizeInBytes = Measurement(
value: Double(value),
unit: UnitInformationStorage.bytes
)
return measurementFormatter.string(
from: sizeInBytes.converted(to: .megabytes)
)
}
}
// MARK: - DateFormatter+Formats
private extension MeasurementFormatter {
static let informationSizeFormatter = {
let formatter = MeasurementFormatter()
formatter.unitStyle = .medium
formatter.numberFormatter.maximumFractionDigits = 2
formatter.locale = .current
return formatter
}()
}
// MARK: - String+Constants
private extension String {
enum Constants {
static let noValue = "-"
}
}