Filterable.swift 558 B

123456789101112131415161718192021222324252627
  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 name: String { get }
  10. var status: Status { get }
  11. func containsText(_ text: String) -> Bool
  12. }
  13. extension SubTask: Filterable {
  14. func containsText(_ text: String) -> Bool {
  15. return name.contains(text) || notes.contains(text)
  16. }
  17. }
  18. extension Task: Filterable {
  19. func containsText(_ text: String) -> Bool {
  20. return name.contains(text) || notes.contains(text) ||
  21. subtasks.contains(where: { $0.containsText(text) })
  22. }
  23. }