GBA002/Pods/SwiftyDropbox/Source/SwiftyDropbox/Shared/Generated/StoneValidators.swift
Riley Testut 6cca0f244f Replaces frameworks with static libraries
As of iOS 13.3.1, apps installed with free developer accounts that contain embedded frameworks fail to launch. To work around this, we now link all dependencies via Cocoapods as static libraries.
2020-02-03 19:28:23 -08:00

82 lines
2.9 KiB
Swift

///
/// Copyright (c) 2016 Dropbox, Inc. All rights reserved.
///
import Foundation
// The objects in this file are used by generated code and should not need to be invoked manually.
var _assertFunc: (Bool, String) -> Void = { cond, message in precondition(cond, message) }
public func setAssertFunc(_ assertFunc: @escaping (Bool, String) -> Void) {
_assertFunc = assertFunc
}
public func arrayValidator<T>(minItems: Int? = nil, maxItems: Int? = nil, itemValidator: @escaping (T) -> Void) -> (Array<T>) -> Void {
return { (value: Array<T>) -> Void in
if let minItems = minItems {
_assertFunc(value.count >= minItems, "\(value) must have at least \(minItems) items")
}
if let maxItems = maxItems {
_assertFunc(value.count <= maxItems, "\(value) must have at most \(maxItems) items")
}
for el in value {
itemValidator(el)
}
}
}
public func stringValidator(minLength: Int? = nil, maxLength: Int? = nil, pattern: String? = nil) -> (String) -> Void {
return { (value: String) -> Void in
let length = value.count
if let minLength = minLength {
_assertFunc(length >= minLength, "\"\(value)\" must be at least \(minLength) characters")
}
if let maxLength = maxLength {
_assertFunc(length <= maxLength, "\"\(value)\" must be at most \(maxLength) characters")
}
if let pat = pattern {
// patterns much match entire input sequence
let re = try! NSRegularExpression(pattern: "\\A(?:\(pat))\\z", options: NSRegularExpression.Options())
let matches = re.matches(in: value, options: NSRegularExpression.MatchingOptions(), range: NSRange(location: 0, length: length))
_assertFunc(matches.count > 0, "\"\(value) must match pattern \"\(re.pattern)\"")
}
}
}
public func comparableValidator<T: Comparable>(minValue: T? = nil, maxValue: T? = nil) -> (T) -> Void {
return { (value: T) -> Void in
if let minValue = minValue {
_assertFunc(minValue <= value, "\(value) must be at least \(minValue)")
}
if let maxValue = maxValue {
_assertFunc(maxValue >= value, "\(value) must be at most \(maxValue)")
}
}
}
public func nullableValidator<T>(_ internalValidator: @escaping (T) -> Void) -> (T?) -> Void {
return { (value: T?) -> Void in
if let value = value {
internalValidator(value)
}
}
}
public func binaryValidator(minLength: Int?, maxLength: Int?) -> (Data) -> Void {
return { (value: Data) -> Void in
let length = value.count
if let minLength = minLength {
_assertFunc(length >= minLength, "\"\(value)\" must be at least \(minLength) bytes")
}
if let maxLength = maxLength {
_assertFunc(length <= maxLength, "\"\(value)\" must be at most \(maxLength) bytes")
}
}
}