Skip to content

Instantly share code, notes, and snippets.

@dangthaison91
Created April 8, 2019 13:45
Show Gist options
  • Save dangthaison91/3ff0aa57ad635c6417f45ca9a15aace7 to your computer and use it in GitHub Desktop.
Save dangthaison91/3ff0aa57ad635c6417f45ca9a15aace7 to your computer and use it in GitHub Desktop.
//
public protocol ScannerPlugin {
var id: String { get }
var symbol: Barcode.Format { get }
func isApplicable(for code: Barcode) -> Observable<Bool>
func build(withCode code: Barcode, listener: ScannerPluginListener) -> ViewableRouting
}
public protocol ScannerPluginListener: class {
}
public class ScannerPluginPoint {
private var plugins: [ScannerPlugin] = []
private var applicablePlugins: [String: ScannerPlugin] = [:]
private init() {}
func createApplicableRIBs(code: Barcode, listener: ScannerPluginListener) -> Observable<[String: ViewableRouting]> {
// loop plugins and build child routers
}
}
// Plugin
protocol PluginAListener {
}
final class PluginAInteractor: PresentableInteractor<PluginAPresentable>, PluginAInteractable, PluginAPresentableListener {
weak var router: PluginARouting?
weak var listener: ScannerPluginListener? //PluginAListener
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment