55 lines
1.2 KiB
Swift
55 lines
1.2 KiB
Swift
|
//
|
||
|
// 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 = "-"
|
||
|
}
|
||
|
}
|