| ... | ... | @@ -79,7 +79,7 @@ pub fn does_folder_exist(fpath: string) !bool { |
| 79 | 79 | return true; |
| 80 | 80 | } |
| 81 | 81 | |
| 82 | | pub fn _join(comptime delim: string, comptime xs: []string) string { |
| 82 | pub fn _join(comptime delim: string, comptime xs: []const string) string { |
| 83 | 83 | var buf: string = ""; |
| 84 | 84 | for (xs) |x, i| { |
| 85 | 85 | buf = buf ++ x; |
| ... | ... | @@ -96,12 +96,13 @@ pub fn trim_suffix(in: string, suffix: string) string { |
| 96 | 96 | } |
| 97 | 97 | |
| 98 | 98 | pub fn repeat(s: string, times: i32) !string { |
| 99 | | var list = std.ArrayList(string).init(gpa); |
| 99 | var list = std.ArrayList(u8).init(gpa); |
| 100 | defer list.deinit(); |
| 100 | 101 | var i: i32 = 0; |
| 101 | 102 | while (i < times) : (i += 1) { |
| 102 | | try list.append(s); |
| 103 | try list.appendSlice(s); |
| 103 | 104 | } |
| 104 | | return try std.mem.join(gpa, "", list.items); |
| 105 | return list.toOwnedSlice(); |
| 105 | 106 | } |
| 106 | 107 | |
| 107 | 108 | pub fn list_contains(haystack: []const string, needle: string) bool { |
| ... | ... | @@ -122,7 +123,10 @@ pub fn list_contains_gen(comptime T: type, haystack: []const T, needle: T) bool |
| 122 | 123 | return false; |
| 123 | 124 | } |
| 124 | 125 | |
| 125 | | pub fn file_list(dpath: string, list: *std.ArrayList(string)) !void { |
| 126 | pub fn file_list(dpath: string) ![]const string { |
| 127 | var list = std.ArrayList(string).init(gpa); |
| 128 | defer list.deinit(); |
| 129 | |
| 126 | 130 | const dir = try std.fs.cwd().openDir(dpath, .{ .iterate = true }); |
| 127 | 131 | var walk = try dir.walk(gpa); |
| 128 | 132 | defer walk.deinit(); |
| ... | ... | @@ -136,6 +140,7 @@ pub fn file_list(dpath: string, list: *std.ArrayList(string)) !void { |
| 136 | 140 | break; |
| 137 | 141 | } |
| 138 | 142 | } |
| 143 | return list.toOwnedSlice(); |
| 139 | 144 | } |
| 140 | 145 | |
| 141 | 146 | pub fn run_cmd_raw(dir: ?string, args: []const string) !std.ChildProcess.ExecResult { |
| ... | ... | @@ -186,7 +191,7 @@ pub fn random_string(len: usize) !string { |
| 186 | 191 | return buf; |
| 187 | 192 | } |
| 188 | 193 | |
| 189 | | pub fn parse_split(comptime T: type, delim: string) type { |
| 194 | pub fn parse_split(comptime T: type, comptime delim: string) type { |
| 190 | 195 | return struct { |
| 191 | 196 | const Self = @This(); |
| 192 | 197 | |
| ... | ... | @@ -195,8 +200,10 @@ pub fn parse_split(comptime T: type, delim: string) type { |
| 195 | 200 | |
| 196 | 201 | pub fn do(input: string) !Self { |
| 197 | 202 | var iter = std.mem.split(u8, input, delim); |
| 203 | const start = iter.next() orelse return error.IterEmpty; |
| 204 | const id = std.meta.stringToEnum(T, start) orelse return error.NoMemberFound; |
| 198 | 205 | return Self{ |
| 199 | | .id = std.meta.stringToEnum(T, iter.next() orelse return error.IterEmpty) orelse return error.NoMemberFound, |
| 206 | .id = id, |
| 200 | 207 | .string = iter.rest(), |
| 201 | 208 | }; |
| 202 | 209 | } |