Skip to content

Instantly share code, notes, and snippets.

View xxKRASHxx's full-sized avatar
🐺

Daniel Lisovoy xxKRASHxx

🐺
View GitHub Profile
@xxKRASHxx
xxKRASHxx / Dispatcher.swift
Last active December 7, 2018 10:41
Redux Store
protocol Dispatcher {
func dispatch(action: Action)
}
extension Dispatcher {
func bind(action: Action) -> Command {
return Command { self.dispatch(action: action) }
}
}
@xxKRASHxx
xxKRASHxx / CustomActivity.swift
Created July 9, 2018 15:26 — forked from shu223/CustomActivity.swift
Custom UIActivity in Swift 3
import UIKit
class CustomActivity: UIActivity {
override class var activityCategory: UIActivityCategory {
return .action
}
override var activityType: UIActivityType? {
guard let bundleId = Bundle.main.bundleIdentifier else {return nil}
import Foundation
class DisposeToken {
let block: (Void) -> Void
init(block: @escaping (Void) -> Void) { self.block = block }
deinit { block() }
}
class Store<State> {
public func weakify<Value: AnyObject, Arguments, Result>(
_ function: @escaping (Value) -> (Arguments) -> Result,
object: Value,
default value: Result)
-> (Arguments) -> Result {
return { [weak object] arguments in
object.map { function($0)(arguments) } ?? value
}
}
import Foundation
/// Protocol for NSLocking objects that also provide tryLock()
public protocol TryLockable: NSLocking {
func `try`() -> Bool
}
// These Cocoa classes have tryLock()
extension NSLock: TryLockable {}
extension NSRecursiveLock: TryLockable {}
@xxKRASHxx
xxKRASHxx / CallingNotificationView.swift
Last active December 8, 2017 16:48
Generic protocol for loading views from xib
import UIKit
class AnyViewClass: UIView {}
extension AnyView: NibInstantiable { }
let view: AnyViewClass = .fromNib()
type(of: view) //will be AnyViewClass
@xxKRASHxx
xxKRASHxx / Pipe.swift
Last active June 8, 2018 08:08
Notification mechanism
public class Token {
public typealias DisposeAction = () -> Void
private let action: DisposeAction
private var isDisposed: Bool = false
public init(action: @escaping DisposeAction) { self.action = action }
private func innerDispose() {
@xxKRASHxx
xxKRASHxx / AnyInteractor.swift
Last active November 20, 2017 13:23
SwiftInject DI Example
class AnyInteractor: DBAccessable {
/*
easy access to self.dbService
*/
}
@xxKRASHxx
xxKRASHxx / BinarySearchTree.swift
Last active December 12, 2016 13:11
BinarySearchTree
enum BinarySearchTree<T: Comparable> {
case empty
case leaf(T)
indirect case node(BinarySearchTree, T, BinarySearchTree)
}
extension BinarySearchTree {
var count: Int {
switch self {