| ... | ... | @@ -1201,15 +1201,17 @@ fn testRelativeWindows(from: []const u8, to: []const u8, expected_output: []cons |
| 1201 | 1201 | /// - `"src.keep.me"` ⇒ `".me"` |
| 1202 | 1202 | /// - `"/src/keep.me"` ⇒ `".me"` |
| 1203 | 1203 | /// - `"/src/keep.me/"` ⇒ `".me"` |
| 1204 | /// The returned slice is guaranteed to have its pointer within the start and end |
| 1205 | /// pointer address range of `path`, even if it is length zero. |
| 1204 | 1206 | pub fn extension(path: []const u8) []const u8 { |
| 1205 | 1207 | const filename = basename(path); |
| 1206 | 1208 | return if (std.mem.lastIndexOf(u8, filename, ".")) |index| |
| 1207 | 1209 | if (index == 0 or index == filename.len - 1) |
| 1208 | | "" |
| 1210 | path[path.len..] |
| 1209 | 1211 | else |
| 1210 | 1212 | filename[index..] |
| 1211 | 1213 | else |
| 1212 | | ""; |
| 1214 | path[path.len..]; |
| 1213 | 1215 | } |
| 1214 | 1216 | |
| 1215 | 1217 | fn testExtension(path: []const u8, expected: []const u8) void { |