This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension DispatchQueue { | |
/// Helper method to use when reading from a resource | |
/// that is being isolated by this queue. | |
/// | |
/// Using this method retriving a value like this: | |
/// ``` | |
/// var result: T? | |
/// queue.sync { | |
/// result = resource["key"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Throttle { | |
let delay: TimeInterval | |
private var workItem: DispatchWorkItem? | |
private let queue: DispatchQueue | |
init(delay: TimeInterval, queue: DispatchQueue = .main) { | |
self.delay = delay | |
self.queue = queue | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
import PlaygroundSupport | |
PlaygroundPage.current.needsIndefiniteExecution = true | |
extension Comparable { | |
/// Clamp the value between `low` and `high` | |
func clamp(_ low: Self, _ high: Self) -> Self { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Car { | |
let made: String | |
} | |
func compareDumps(lhs: Any, rhs: Any) -> Bool { | |
var (lhsDump, rhsDump) = (String(), String()) | |
dump(lhs, to: &lhsDump) | |
dump(rhs, to: &rhsDump) | |
return lhsDump == rhsDump | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
// Defining this breaks the behaviour of the existing '||' operator in some cases | |
public func ||(lhs: NSPredicate, rhs: NSPredicate) -> NSPredicate { | |
return NSCompoundPredicate(orPredicateWithSubpredicates: [lhs, rhs]) | |
} | |
func foo() { | |
let cards = [String: [String]]() | |
let startingContactIndex: UInt = 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public extension UIView { | |
static var debugColors: [UIColor] { | |
return [ | |
.red, | |
.green, | |
.blue, | |
.cyan, | |
.yellow, | |
.magenta, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Equatable { | |
func oneOf(other: Self...) -> Bool { | |
return other.contains(self) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
/// Object observing keyboard changes and passing a `KeyboardChangeInfo` to notify about changes. | |
final class KeyboardObserver: NSObject { | |
typealias KeyboardChangeClosure = (KeyboardChangeInfo) -> Void | |
let changeClosure: KeyboardChangeClosure | |
// MARK: - Private |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
struct Change<T>: CustomDebugStringConvertible { | |
let oldValue, newValue: T? | |
var debugDescription: String { | |
let prettyString: T? -> String = { return $0 != nil ? "\($0!)" : ".None" } | |
return "ChangeType:\n\tOld value: \(prettyString(oldValue))\n\tNew value: \(prettyString(newValue))" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public struct CountedSet<Element : Hashable> : Hashable, CollectionType, ArrayLiteralConvertible { | |
public typealias Index = SetIndex<Element> | |
public typealias Generator = SetGenerator<Element> | |
private var backingSet = Set<Element>() | |
private var countMapping = [Int: UInt]() | |
private var debugCountMapping: [Element : UInt] { | |
var result = [Element : UInt]() | |
backingSet.forEach { element in |