This file contains hidden or 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 Result { | |
| public func `catch`(_ handler: () throws -> Success) -> Result<Success, Error> { | |
| flatMapError { _ in | |
| .init { try handler() } | |
| } | |
| } | |
| public func `catch`(_ handler: (Failure) throws -> Success) -> Result<Success, Error> { | |
| flatMapError { error in | |
| .init { try handler(error) } |
This file contains hidden or 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
| // | |
| // KeyCommand.swift | |
| // Adds Keyboard Shortcuts to SwiftUI on iOS 13 | |
| // See https://steipete.com/posts/fixing-keyboardshortcut-in-swiftui/ | |
| // License: MIT | |
| // | |
| // Usage: (wrap view in `KeyboardEnabledHostingController`) | |
| // Button(action: { | |
| // print("Button Tapped!!") | |
| // }) { |
This file contains hidden or 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 Darwin | |
| @dynamicMemberLookup | |
| struct Environment { | |
| subscript(dynamicMember name: String) -> String? { | |
| get { | |
| guard let value = getenv(name) else { return nil } | |
| return String(validatingUTF8: value) | |
| } |
This file contains hidden or 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 | |
| let text = """ | |
| Hello | |
| World | |
| """ | |
| extension String { | |
| var lines: AnySequence<Substring> { | |
| let string = self |
This file contains hidden or 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 | |
| // A lens is a getter and a setter combined | |
| struct Lens<Whole, Part> { | |
| let get: (Whole) -> Part | |
| let set: (inout Whole, Part) -> () | |
| } | |
| // We can create a lens from a key path | |
| extension Lens { |
This file contains hidden or 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 Promise<T> { | |
| typealias Fulfiller = (T) -> (Void) | |
| typealias Rejecter = (Void) -> (Void) | |
| typealias Resolver = (_ fulfill: @escaping Fulfiller, _ reject: @escaping Rejecter) -> (Void) | |
| let resolver: Resolver | |
| init(_ resolver: @escaping Resolver){ | |
| self.resolver = resolver | |
| } | |
| func then<U>(_ execute: @escaping ((T) -> U)) -> Promise<U> { | |
| return Promise<U>({(fulfill, reject) in |
This file contains hidden or 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
| /* A responder chain implementation for a hypothetical pure-Swift | |
| * equivalent for UIKit. | |
| * More info at: http://roopc.net/posts/2016/swifty-responder-chain/ | |
| */ | |
| /* A responder is something that has an optional next responder, | |
| so that we can have a chain of responders. */ | |
| protocol Responder { | |
| var nextResponder: Responder? { get } |
This file contains hidden or 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
| COMPACT WIDTH (stacked view) | |
| - 320 x 568 pt | |
| -> iPhone 5, 5s | |
| - 320 x 768 pt | |
| -> iPad 9.7" Split Landscape 2/3 right | |
| - 320 x 834 pt | |
| -> iPad 10.5" Split Landscape 2/3 right | |
| - 320 x 1024 pt | |
| -> iPad 9.7" Split Portrait right |
This file contains hidden or 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 re | |
| section = '' | |
| print "o, size" | |
| for line in open('breakdown.txt'): | |
| m = re.search('libMapbox.a\(([\w\.]+)\):', line) | |
| if m: | |
| section = m.group(1) | |
| total = re.search('total (\d+)', line) | |
| if total and section: | |
| print "%s, %s" % (section, total.group(1)) |
This file contains hidden or 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 | |
| extension Dictionary { | |
| mutating public func setValue(val: AnyObject, forKeyPath keyPath: String) { | |
| var keys = keyPath.componentsSeparatedByString(".") | |
| guard let first = keys.first as? Key else { print("Unable to use string as key on type: \(Key.self)"); return } | |
| keys.removeAtIndex(0) | |
| if keys.isEmpty, let settable = val as? Value { | |
| self[first] = settable | |
| } else { |
NewerOlder