Skip to content

Instantly share code, notes, and snippets.

View marty-suzuki's full-sized avatar
Back to the future

Taiki Suzuki marty-suzuki

Back to the future
View GitHub Profile
class ViewController: UIViewController {
let label = UILabel(frame: .zero)
let wrapper = Wrapper()
override func viewDidLoad() {
super.viewDidLoad()
let closure = wrapper.observe1(label).keyPath(\.text)
closure { newValue in
print("observe1: \(String(describing: newValue))")
@marty-suzuki
marty-suzuki / MVVC.swift
Created December 21, 2019 07:33
Model-View-ViewController
import PlaygroundSupport
import UIKit
// MARK: - ViewType
protocol ViewType: AnyObject {
func swapView(in viewController: UIViewController)
}
extension ViewType where Self: UIView {
package jp.marty_suzuki.unio
import android.arch.lifecycle.LifecycleOwner
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.Observer
import kotlin.reflect.KProperty1
interface InputInterface
interface OutputInterface
struct Generic<T> {
fileprivate let base: T
}
extension Generic where T == UICollectionView {
fileprivate init(_ base: UICollectionView) {
self.base = base
}
import Foundation
import UIKit
@_functionBuilder struct ConstraintBuilder {
static func buildBlock<T, U>(_ from: NSLayoutAnchor<T>,
_ relation: Relation<U>,
_ to: NSLayoutAnchor<T>) -> NSLayoutConstraint {
return U.constraint(from: from, to: to, constant: relation.constant)
}
}
import Combine
import FirebaseAuth
public struct CombineAuth {
fileprivate let auth: Auth
}
extension CombineAuth {
public enum Error: Swift.Error {
struct Weak<T: AnyObject> {
private let o: () -> T?
init(_ o: T) {
self.o = { [weak o] in o }
}
}
extension Weak {
func `do`<U>(execute: (T) -> U?) -> U? {
@marty-suzuki
marty-suzuki / DynamicUserDefaults.swift
Created June 9, 2019 04:40
Sample usage of Swift 5.1 dynamicMemberLookup that supports KeyPath.
import Foundation
@dynamicMemberLookup
final class DynamicUserDefaults {
static var standard: DynamicUserDefaults {
return DynamicUserDefaults(.standard)
}
private let keys = Keys()
import UIKit
// - MRAK: Constraint
struct Constraint {
private let _constraint: (UIView, UIView) -> NSLayoutConstraint
init(_ constraint: @escaping (UIView, UIView) -> NSLayoutConstraint) {
self._constraint = constraint
import RxCocoa
import RxSwift
public protocol RxDUCValueType {
associatedtype E
var rawValue: E { get }
init(_ value: E, equals: @escaping (E, E) -> Bool)