fin
This commit is contained in:
		@@ -16,23 +16,15 @@ pub fn userInteraction(allocator: std.mem.Allocator, tasks: *std.ArrayList([]con
 | 
			
		||||
            continue;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        // todo make available commads be listed from enum itself
 | 
			
		||||
        const Case = enum { add, edit, remove, move, quit };
 | 
			
		||||
        const Case = enum { add, edit, remove, quit };
 | 
			
		||||
 | 
			
		||||
        var fields = std.ArrayList([]const u8).init(allocator);
 | 
			
		||||
        defer fields.deinit();
 | 
			
		||||
 | 
			
		||||
        inline for (@typeInfo(Case).Enum.fields) |f| {
 | 
			
		||||
            fields.append(f.name);
 | 
			
		||||
        }
 | 
			
		||||
        try stdout.print("Please enter your choice [add/remove/edit/move/quit]: ", .{});
 | 
			
		||||
        try stdout.print("Please enter your choice [add/remove/edit/quit]: ", .{});
 | 
			
		||||
        const input = getInput(allocator) catch |err| {
 | 
			
		||||
            std.debug.print("Error acquiring input:\n{}\n", .{err});
 | 
			
		||||
            continue;
 | 
			
		||||
        };
 | 
			
		||||
        defer allocator.free(input);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        const case = std.meta.stringToEnum(Case, input) orelse continue;
 | 
			
		||||
 | 
			
		||||
        var task_name: []const u8 = undefined;
 | 
			
		||||
@@ -79,56 +71,11 @@ pub fn userInteraction(allocator: std.mem.Allocator, tasks: *std.ArrayList([]con
 | 
			
		||||
                allocator.free(tasks.items[id]);
 | 
			
		||||
                _ = tasks.orderedRemove(id);
 | 
			
		||||
            },
 | 
			
		||||
            .move => {
 | 
			
		||||
                try stdout.print("Please enter task name or number: ", .{});
 | 
			
		||||
                _ = getTaskIndex(tasks, task_name) catch {
 | 
			
		||||
                    std.debug.print("Invalid task name...", .{});
 | 
			
		||||
                    continue;
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                const new_input = getInput(allocator) catch |err| {
 | 
			
		||||
                    std.debug.print("Failed to get new input:\n{}\n", .{err});
 | 
			
		||||
                    continue;
 | 
			
		||||
                };
 | 
			
		||||
                defer allocator.free(new_input);
 | 
			
		||||
 | 
			
		||||
                _ = std.fmt.parseInt(usize, new_input, 10) catch |err| {
 | 
			
		||||
                    std.debug.print("Failed to convert the input into ID:\n{}\n", .{err});
 | 
			
		||||
                    continue;
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                // todo restructure arraylist
 | 
			
		||||
            },
 | 
			
		||||
            .quit => break,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn get_fields_str(allocator: std.mem.Allocator, arr: std.ArrayList([]const u8)) ![]const u8 {
 | 
			
		||||
    // get len
 | 
			
		||||
    var len = 0;
 | 
			
		||||
    for (arr.items) |value| {
 | 
			
		||||
        len += value.len;
 | 
			
		||||
    }
 | 
			
		||||
    len += arr.capacity - 1;
 | 
			
		||||
 | 
			
		||||
    // todo free mem
 | 
			
		||||
    var result = try allocator.alloc(u8, len);
 | 
			
		||||
    defer allocator.free(result);
 | 
			
		||||
 | 
			
		||||
    var cur_len = 0;
 | 
			
		||||
    for (arr.items) |value| {
 | 
			
		||||
        @memcpy(result[0..], value);
 | 
			
		||||
        cur_len += value.len;
 | 
			
		||||
 | 
			
		||||
        if (value == arr.items[arr.capacity-1]) continue;
 | 
			
		||||
        @memcpy(result[cur_len..], "/");
 | 
			
		||||
        cur_len += 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn getInput(allocator: std.mem.Allocator) ![]const u8 {
 | 
			
		||||
    const stdin = std.io.getStdIn().reader();
 | 
			
		||||
    const bare_line = try stdin.readUntilDelimiterAlloc(allocator, '\n', 8192);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user