mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
48 lines
1.4 KiB
Swift
48 lines
1.4 KiB
Swift
//
|
|
// Convert.swift
|
|
// GraphTest
|
|
//
|
|
// Created by Andrei Salavei on 3/11/19.
|
|
// Copyright © 2019 Andrei Salavei. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
#if os(macOS)
|
|
import Cocoa
|
|
#else
|
|
import UIKit
|
|
#endif
|
|
|
|
public enum Convert {
|
|
public static func doubleFrom(_ value: Any?) throws -> Double {
|
|
guard let double = try doubleFrom(value, lenientCast: false) else {
|
|
throw ChartsError.generalConversion("Unable to cast \(String(describing: value)) to \(Double.self)")
|
|
}
|
|
return double
|
|
}
|
|
|
|
public static func doubleFrom(_ value: Any?, lenientCast: Bool = false) throws -> Double? {
|
|
guard let value = value else {
|
|
return nil
|
|
}
|
|
if let intValue = value as? Int {
|
|
return Double(intValue)
|
|
} else if let floatValue = value as? Float {
|
|
return Double(floatValue)
|
|
} else if let int64Value = value as? Int64 {
|
|
return Double(int64Value)
|
|
} else if let intValue = value as? Int {
|
|
return Double(intValue)
|
|
} else if let stringValue = value as? String {
|
|
if let doubleValue = Double(stringValue) {
|
|
return doubleValue
|
|
}
|
|
}
|
|
if lenientCast {
|
|
return nil
|
|
} else {
|
|
throw ChartsError.generalConversion("Unable to cast \(String(describing: value)) to \(Double.self)")
|
|
}
|
|
}
|
|
}
|