Merge pull request #35 from alexnask/better_path_handling
Maintain case when making a URI from a path
This commit is contained in:
commit
761c277ccc
@ -634,7 +634,12 @@ pub fn main() anyerror!void {
|
|||||||
}
|
}
|
||||||
defer std.json.parseFree(Config, config, config_parse_options);
|
defer std.json.parseFree(Config, config, config_parse_options);
|
||||||
|
|
||||||
// @TODO Check is_absolute
|
if (config.zig_lib_path != null and !std.fs.path.isAbsolute(config.zig_lib_path.?)) {
|
||||||
|
std.debug.warn("zig library path is not absolute, defaulting to null.\n", .{});
|
||||||
|
allocator.free(config.zig_lib_path.?);
|
||||||
|
config.zig_lib_path = null;
|
||||||
|
}
|
||||||
|
|
||||||
try document_store.init(allocator, config.zig_lib_path);
|
try document_store.init(allocator, config.zig_lib_path);
|
||||||
defer document_store.deinit();
|
defer document_store.deinit();
|
||||||
|
|
||||||
|
16
src/uri.zig
16
src/uri.zig
@ -1,6 +1,6 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const reserved_chars = &[_]u8 {
|
const reserved_chars = &[_]u8{
|
||||||
'!', '#', '$', '%', '&', '\'',
|
'!', '#', '$', '%', '&', '\'',
|
||||||
'(', ')', '*', '+', ',', ':',
|
'(', ')', '*', '+', ',', ':',
|
||||||
';', '=', '?', '@', '[', ']',
|
';', '=', '?', '@', '[', ']',
|
||||||
@ -24,7 +24,17 @@ pub fn fromPath(allocator: *std.mem.Allocator, path: []const u8) ![]const u8 {
|
|||||||
try buf.append('%');
|
try buf.append('%');
|
||||||
try std.fmt.format(out_stream, "{X}", .{char});
|
try std.fmt.format(out_stream, "{X}", .{char});
|
||||||
} else {
|
} else {
|
||||||
try buf.append(std.ascii.toLower(char));
|
try buf.append(char);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On windows, we need to lowercase the drive name.
|
||||||
|
if (std.builtin.os.tag == .windows) {
|
||||||
|
if (buf.items.len > prefix.len + 1 and
|
||||||
|
std.ascii.isAlpha(buf.items[prefix.len]) and
|
||||||
|
std.mem.startsWith(u8, buf.items[prefix.len + 1 ..], "%3A"))
|
||||||
|
{
|
||||||
|
buf.items[prefix.len] = std.ascii.toLower(buf.items[prefix.len]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +43,7 @@ pub fn fromPath(allocator: *std.mem.Allocator, path: []const u8) ![]const u8 {
|
|||||||
|
|
||||||
// Original code: https://github.com/andersfr/zig-lsp/blob/master/uri.zig
|
// Original code: https://github.com/andersfr/zig-lsp/blob/master/uri.zig
|
||||||
fn parseHex(c: u8) !u8 {
|
fn parseHex(c: u8) !u8 {
|
||||||
return switch(c) {
|
return switch (c) {
|
||||||
'0'...'9' => c - '0',
|
'0'...'9' => c - '0',
|
||||||
'a'...'f' => c - 'a' + 10,
|
'a'...'f' => c - 'a' + 10,
|
||||||
'A'...'F' => c - 'A' + 10,
|
'A'...'F' => c - 'A' + 10,
|
||||||
|
Loading…
Reference in New Issue
Block a user