╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────╮ │2641 // an absolute url is already complete │ │2642 if (!std.mem.startsWith(u8, path, "/")) return path; │ │2643 return if (session.web_port) |port| │ │2644 - try std.fmt.allocPrint(allocator, "http://localhost:{d}{s}", .{ port, path })│ │2644 + try allocator.print("http://localhost:{d}{s}", .{ port, path }) │ │2645 else │ │2646 path; │ │2647 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2721 pub fn userLink(page_arena: *std.heap.ArenaAllocator, name: []const u8) ![]const u8 { │ │2722 const parsed = RoutablePage.Array(evt.User.name_max_len).from(name) orelse return error.RouteTooLong;│ │2723 const url = try (RoutablePage{ .user_repos = .{ .name = parsed } }).toUrl(page_arena); │ │2724 - return std.fmt.allocPrint(page_arena.allocator(), "a:{s}", .{url}); │ │2724 + return page_arena.allocator().print("a:{s}", .{url}); │ │2725 } │ │2726 │ │2727 // a focusable " author " box showing `author`, linking to their user page │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Fork.zig│ ╰───────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │53 if (!std.mem.eql(u8, target_record.event.name, identity.name)) return error.NotFound; │ │54 │ │55 const aa = arena.allocator(); │ │56 - const target_identity = try std.fmt.allocPrint(aa, "{s}:{s}", .{ owner.event.name, target_record.event.name });│ │56 + const target_identity = try aa.print("{s}:{s}", .{ owner.event.name, target_record.event.name }); │ │57 const id_hex = std.fmt.bytesToHex(id, .lower); │ │58 // the fork's viewer is the target repo's │ │59 const handle = ui.RepoHandle{ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │211 errdefer commits.deinit(allocator); │ │212 try stack.children.put(allocator, commits.getFocus().id, .{ .repo_commits = commits }); │ │213 } │ │214 - const identity = try std.fmt.allocPrint(session.page_arena.allocator(), "{s}:{s}", .{ data.header.forker_name, data.header.name });│ │214 + const identity = try session.page_arena.allocator().print("{s}:{s}", .{ data.header.forker_name, data.header.name }); │ │215 if (session.data.user_id != null) { │ │216 const route = ui.RoutablePage.forkRepoNewRoute(identity, data.header.id) orelse return error.RouteTooLong; │ │217 var new_repo = try ui.NewRepo.View.init(allocator, session, route); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Fork/Header.zig│ ╰──────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │60 errdefer tab_ids.deinit(allocator); │ │61 │ │62 const aa = session.page_arena.allocator(); │ │63 - const fork_identity = try std.fmt.allocPrint(aa, "{s}:{s}", .{ data.forker_name, data.name }); │ │64 - const commits_label = if (commit_count) |count| try std.fmt.allocPrint(aa, commits_tab_label ++ " ({d})", .{count}) else commits_tab_label;│ │63 + const fork_identity = try aa.print("{s}:{s}", .{ data.forker_name, data.name }); │ │64 + const commits_label = if (commit_count) |count| try aa.print(commits_tab_label ++ " ({d})", .{count}) else commits_tab_label; │ │65 var first_group_width = try data.title.width(); │ │66 │ │67 try ui.widget.addBackButton(allocator, &title_box, session); │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │73 var forker = try wgt.TextBox.init(allocator, text, .{ .border_style = .hidden, .wrap_kind = .none }); │ │74 errdefer forker.deinit(allocator); │ │75 forker.getFocus().mode = .all; │ │76 - forker.getFocus().kind = .{ .custom = try std.fmt.allocPrint(aa, "a:/{s}", .{data.forker_name}) }; │ │76 + forker.getFocus().kind = .{ .custom = try aa.print("a:/{s}", .{data.forker_name}) }; │ │77 first_group_width += try xitui.width.displayWidth(text) + 2; │ │78 try title_box.children.put(allocator, forker.getFocus().id, .{ .widget = .{ .text_box = forker }, .rect = null, .min_size = null });│ │79 } │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │84 var title = try ui.Title.View.init(allocator, &data.title); │ │85 errdefer title.deinit(allocator); │ │86 title.getFocus().mode = .all; │ │87 - title.getFocus().kind = .{ .custom = try std.fmt.allocPrint(aa, "a:{s}", .{try route.toUrl(session.page_arena)}) }; │ │87 + title.getFocus().kind = .{ .custom = try aa.print("a:{s}", .{try route.toUrl(session.page_arena)}) }; │ │88 try title_box.children.put(allocator, title.getFocus().id, .{ .widget = .{ .title = title }, .rect = null, .min_size = null });│ │89 } │ │90 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Home/Users.zig│ ╰─────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │108 if (data.start > 0) { │ │109 var prev = route; │ │110 prev.home_users.start = data.start -| page_size; │ │111 - try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:{s}", .{try prev.toUrl(&arena)}) });│ │111 + try items.append(aa, .{ .text = "← previous", .link = try aa.print("a:{s}", .{try prev.toUrl(&arena)}) }); │ │112 } │ │113 for (data.users) |user| │ │114 // clicking a user opens their page; the "a:" prefix makes the web │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────╮ │115 // renderer emit an <a href="/foo"> anchor. │ │116 try items.append(aa, .{ │ │117 .text = user.name, │ │118 - .link = try std.fmt.allocPrint(aa, "a:/{s}", .{user.name}),│ │118 + .link = try aa.print("a:/{s}", .{user.name}), │ │119 }); │ │120 if (data.next_start) |next_start| { │ │121 var next = route; │ ╰────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │122 next.home_users.start = next_start; │ │123 - try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:{s}", .{try next.toUrl(&arena)}) });│ │123 + try items.append(aa, .{ .text = "next →", .link = try aa.print("a:{s}", .{try next.toUrl(&arena)}) }); │ │124 } │ │125 try list.setItems(allocator, items.items); │ │126 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯