import Foundation import NorgKit public enum NorgLinkURL { public static let scheme = "norgui-link" public static func encode(_ link: InlineLink) -> URL? { var components = URLComponents() components.scheme = scheme components.host = link.kind == .anchor ? "anchor" : "link" if let target = link.target { components.queryItems = [URLQueryItem(name: "target", value: target)] } return components.url } public static func decode(_ url: URL) -> InlineLink? { guard url.scheme == scheme else { return nil } let kind: InlineLink.Kind = url.host == "anchor" ? .anchor : .link let target = URLComponents(url: url, resolvingAgainstBaseURL: false)? .queryItems?.first { $0.name == "target" }?.value return InlineLink(kind: kind, target: target) } }