I hereby claim:
- I am banjun on github.
- I am banjun (https://keybase.io/banjun) on keybase.
- I have a public key ASCKLh62-ATKJawCqVs88yAl7RXvjVxgeGpW0T1LsZnF8Ao
To claim this, I am signing this object:
| diff --git a/lib/AST/ConformanceLookupTable.cpp b/lib/AST/ConformanceLookupTable.cpp | |
| index 51810ec39c..e496a11967 100644 | |
| --- a/lib/AST/ConformanceLookupTable.cpp | |
| +++ b/lib/AST/ConformanceLookupTable.cpp | |
| @@ -482,6 +482,12 @@ bool ConformanceLookupTable::addProtocol(NominalTypeDecl *nominal, | |
| // context. | |
| AllConformances[dc].push_back(entry); | |
| + // banjun | |
| +// printf("[Conformance] %s.%s: %s.%s\n", |
| // % swift qrcli.swift TEST > qrcode.png | |
| // or, % swift build -Xswiftc -framework -Xswiftc CoreImage | |
| import CoreImage | |
| import class AppKit.NSBitmapImageRep | |
| func qrcode(_ text: String) -> CIImage { | |
| let filter = CIFilter(name: "CIQRCodeGenerator")! | |
| filter.setValue(text.data(using: .shiftJIS), forKey: "inputMessage") | |
| filter.setValue("M", forKey: "inputCorrectionLevel") |
| extension SignalProducerProtocol { | |
| func resolveFuture(_ resolver: @escaping (Result<Value, Error>) -> Void) -> SignalProducer<Value, Error> { | |
| return on(value: {resolver(.success($0))}) | |
| .on(failed: {resolver(.failure($0))}) | |
| } | |
| // create SignalProducer that create Future with the autoclosure on start and send a result to the inner observer | |
| init(_ future: @escaping @autoclosure (Void) -> Future<Value, Error>) { | |
| self.init { observer, _ in | |
| future().onSuccess {observer.send(value: $0)} |
| <div class="mermaid"> | |
| graph LR | |
| subgraph ReactiveSwift | |
| Signal("Signal#lt;Value, Error#gt;(state = not completed)") | |
| Completed("(state = completed)") | |
| Signal -- "Signal.Event.value(Value)" --> Signal | |
| Signal -- "Signal.Event.failed(Error)" --> Completed | |
| Signal -- "Signal.Event.completed" --> Completed | |
| Signal -- "Signal.Event.interrupted" --> Completed | |
| end |
| extension AVCaptureDevice { | |
| class func swizzle() { | |
| [(#selector(AVCaptureDevice.defaultDevice(withMediaType:)), #selector(AVCaptureDevice.mockDefaultDevice(withMediaType:)))].forEach { | |
| let original = class_getClassMethod(self, $0) | |
| let mock = class_getClassMethod(self, $1) | |
| method_exchangeImplementations(original, mock) | |
| } | |
| [(#selector(AVCaptureDevice.hasMediaType(_:)), #selector(AVCaptureDevice.mockHasMediaType(_:))), | |
| (#selector(AVCaptureDevice.supportsAVCaptureSessionPreset(_:)), #selector(AVCaptureDevice.mockSupportsAVCaptureSessionPreset)), | |
| (#selector(AVCaptureDevice.isTorchModeSupported(_:)), #selector(AVCaptureDevice.mockIsTorchModeSupported)), |
| LEGACY_SWIFT_PODS = [] # set all the derived pods initially. e.g. %w(BrightFutures JetToTheFuture) | |
| def set_legacy_swift(installer) | |
| UI.warn "#{LEGACY_SWIFT_PODS.count} pods are marked as legacy swift: #{LEGACY_SWIFT_PODS}" | |
| installer.pods_project.targets.select {|t| LEGACY_SWIFT_PODS.include? t.name}.each do |target| | |
| pod_target = installer.pod_targets.find {|t| t.name == target.name} | |
| unless pod_target.uses_swift? | |
| UI.warn "#{target.name} does not use Swift." |
| override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { | |
| guard let v = self.tableView(tableView, viewForHeaderInSection: section) else { return 0 } | |
| guard #available(iOS 11, *) else { | |
| let h = v.bounds.height | |
| return h > 0 ? h : UITableViewAutomaticDimension | |
| } | |
| return UITableViewAutomaticDimension // super call returns 0 on UITableViewController, though not overriding this cause behaviors like automatic. | |
| } | |
| override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { |
| import Cocoa | |
| import CoreMediaIO | |
| import AVFoundation | |
| class ViewController: NSViewController { | |
| override func viewDidLoad() { | |
| super.viewDidLoad() | |
| var prop = CMIOObjectPropertyAddress( | |
| mSelector: CMIOObjectPropertySelector(kCMIOHardwarePropertyAllowScreenCaptureDevices), |
I hereby claim:
To claim this, I am signing this object:
| extension SignalProducer { | |
| // create SignalProducer that create Future with the autoclosure on start and send a result to the inner observer | |
| init(_ future: @escaping @autoclosure () -> Future<Value, Error>) { | |
| self.init { observer, _ in | |
| future() | |
| .onSuccess { | |
| observer.send(value: $0) | |
| observer.sendCompleted()} | |
| .onFailure { | |
| observer.send(error: $0)} |