Skip to content

Instantly share code, notes, and snippets.

View vikingosegundo's full-sized avatar

Manuel Meyer vikingosegundo

  • Groningen, Netherlands
View GitHub Profile
[
▿(.⅛,(.g,.g,.g)), ⩀(♪(.e,.½)), ▬(.⅛),
▿(.⅛,(.f,.f,.f)), ⩀(♪(♭.d,.½)), ▬(.⅛)
]
change(store, .by(.adding(.item(i))) )
respond(.item(i, .wasAdded))
expect(items(in: appState)).to(beEmpty())
expect(dueDate(of:first(of:items(in: appState))!)).to(equal(Date.tomorrow.noon))
expect(dueDate(of:first(of:appState.items)!)).to(equal(Date.tomorrow.noon))
let newItem = change(item, .by(.updating(.completed(to: true))))
change(store, .by(.adding(.item(i))) )
respond(.item(i, .wasAdded))
expect(items(in: appState)).to(beEmpty())
expect(dueDate(of:first(of:items(in: appState))!)).to(equal(Date.tomorrow.noon))
expect(dueDate(of:first(of:appState.items)!)).to(equal(Date.tomorrow.noon))
let newItem = change(item, .by(.updating(.completed(to: true))))
public func change(_ item: TodoItem, _ changes: TodoItem.Change...) -> TodoItem { item.alter(changes) }
public
struct TodoItem: Identifiable, Hashable, Codable {
public enum Change: Equatable, Identifiable {
public var id: String {
switch self {
case .by(.updating(.completed(let b))): return "\(b)"
case .by(.updating(.dueDate (let d))): return d != nil ? "\(d!)" : "\(Date())"
case .by(.updating(.text (let t))): return t
case .by(.updating(.fork (let inner))): return inner.reduce("") { "\($0)\($1)" }
}