MobiusExtras/Source/SimpleLogger.swift (30 lines of code) (raw):

// Copyright Spotify AB. // SPDX-License-Identifier: Apache-2.0 import Foundation import MobiusCore public final class SimpleLogger<Model, Event, Effect>: MobiusLogger { private let prefix: String private let consumer: Consumer<String> public init(tag: String = "Mobius", consumer: @escaping Consumer<String> = { print($0) }) { prefix = tag + ": " self.consumer = consumer } public func willInitiate(model: Model) { consumer(prefix + "Initializing loop") } public func didInitiate(model: Model, first: First<Model, Effect>) { consumer(prefix + "Loop initialized, starting from model: \(first.model)") first.effects.forEach { (effect: Effect) in consumer(prefix + "Effect dispatched: \(effect)") } } public func willUpdate(model: Model, event: Event) { consumer(prefix + "Event received: \(event)") } public func didUpdate(model: Model, event: Event, next: Next<Model, Effect>) { if let nextModel = next.model { consumer(prefix + "Model updated: \(nextModel)") } next.effects.forEach { (effect: Effect) in consumer(prefix + "Effect dispatched: \(effect)") } } }