URLHint.swift 647 B

12345678910111213141516171819202122232425262728293031323334
  1. //
  2. // URLHint.swift
  3. // Todos
  4. //
  5. // Created by Sam Jaffe on 3/1/26.
  6. //
  7. import Foundation
  8. import SwiftData
  9. final class URLHint: Identifiable, Codable {
  10. var prefix: String = ""
  11. var replacement: String = ""
  12. var id: String { prefix }
  13. init() {}
  14. init(prefix: String, replacement: String) {
  15. self.prefix = prefix
  16. self.replacement = replacement
  17. }
  18. func matches(_ tag: Tag) -> Bool {
  19. return tag.id.hasPrefix(prefix)
  20. }
  21. func url(_ tag: Tag) -> URL {
  22. let url = tag.id.replacingOccurrences(of: prefix, with: replacement)
  23. return URL(string: url)!
  24. }
  25. var valid: Bool { !prefix.isEmpty && !replacement.isEmpty }
  26. }