Filterable.swift 533 B

1234567891011121314151617181920212223242526
  1. //
  2. // Filterable.swift
  3. // Todos
  4. //
  5. // Created by Sam Jaffe on 3/7/26.
  6. //
  7. import Foundation
  8. protocol Filterable {
  9. var status: Status { get }
  10. func containsText(_ text: String) -> Bool
  11. }
  12. extension SubTask : Filterable {
  13. func containsText(_ text: String) -> Bool {
  14. return name.contains(text) || notes.contains(text)
  15. }
  16. }
  17. extension Task : Filterable {
  18. func containsText(_ text: String) -> Bool {
  19. return name.contains(text) || notes.contains(text) ||
  20. subtasks.contains(where: { $0.containsText(text) })
  21. }
  22. }