chore: added link prefix
55b2d8be
1 file(s) · +27 −1
| 66 | 66 | let components = trimmed.components(separatedBy: .whitespaces).filter { !$0.isEmpty } |
|
| 67 | 67 | ||
| 68 | 68 | let rawURL = components.first ?? "" |
|
| 69 | - | let label = components.count > 1 ? components.dropFirst().joined(separator: " ") : rawURL |
|
| 69 | + | let baseLabel = components.count > 1 ? components.dropFirst().joined(separator: " ") : rawURL |
|
| 70 | 70 | ||
| 71 | 71 | let resolvedURL: String |
|
| 72 | 72 | if rawURL.contains("://") { |
|
| 78 | 78 | resolvedURL = rawURL |
|
| 79 | 79 | } |
|
| 80 | 80 | ||
| 81 | + | // Add scheme prefix for non-gemini links |
|
| 82 | + | let label = schemePrefix(for: resolvedURL) + baseLabel |
|
| 83 | + | ||
| 81 | 84 | return (resolvedURL, label) |
|
| 85 | + | } |
|
| 86 | + | ||
| 87 | + | private static func schemePrefix(for url: String) -> String { |
|
| 88 | + | guard let parsed = URL(string: url), let scheme = parsed.scheme?.lowercased() else { |
|
| 89 | + | return "" |
|
| 90 | + | } |
|
| 91 | + | ||
| 92 | + | switch scheme { |
|
| 93 | + | case "gemini": |
|
| 94 | + | return "" |
|
| 95 | + | case "http", "https": |
|
| 96 | + | return "[http] " |
|
| 97 | + | case "file": |
|
| 98 | + | return "[file] " |
|
| 99 | + | case "gopher": |
|
| 100 | + | return "[gopher] " |
|
| 101 | + | case "mailto": |
|
| 102 | + | return "[mail] " |
|
| 103 | + | case "finger": |
|
| 104 | + | return "[finger] " |
|
| 105 | + | default: |
|
| 106 | + | return "[\(scheme)] " |
|
| 107 | + | } |
|
| 82 | 108 | } |
|
| 83 | 109 | } |
|