refactor rename preloaded_entry to tree_node, preload to expand

The old names described the fetching mechanism rather than the data structure. The new names are semantically precise: - tree_node: a node in a tree with an entry and optional children - expand: resolves a flat tree into a nested structure - li_of_tree_node: renders a tree node as a list item

Commit
4cfdbed49bcb4fca7906eff527cfb0fe3826a69e
Author
Claude Sonnet 4 <claude@anthropic.invalid>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
lib/handlers.ml
index b26a0ba5..ccc71941 100644..100644
@@ -75,11 +75,11 @@
75 75
76 76 let summary config repository context =
77 77 let* tree = Resolvers.Tree.head repository in
78 Removed: let* preloaded = Resolvers.Tree.preload repository tree in
78 Added: let* nodes = Resolvers.Tree.expand repository tree in
79 79 let* commits =
80 80 Resolvers.Commit.recent repository config.Config.commits_max_displayed
81 81 in
82 Removed: Views.Repo.summary context preloaded commits
82 Added: Views.Repo.summary context nodes commits
83 83
84 84 let commit_matches ?filter_type ?author ?committer
85 85 (commit : Resolvers.Commit.t) =
@@ -179,18 +179,18 @@
179 179
180 180 let files_at_head repository context =
181 181 let* tree = Resolvers.Tree.head repository in
182 Removed: let* preloaded = Resolvers.Tree.preload repository tree in
182 Added: let* nodes = Resolvers.Tree.expand repository tree in
183 183 let* readme = find_readme repository tree in
184 Removed: Views.Repo.files context [] ?readme preloaded
184 Added: Views.Repo.files context [] ?readme nodes
185 185
186 186 let file_id repository context id =
187 187 let* trail = Resolvers.Tree.find_path repository id in
188 188 let* object_ = Resolvers.blob_or_tree repository id in
189 189 match object_ with
190 190 | `Tree tree ->
191 Removed: let* preloaded = Resolvers.Tree.preload repository tree in
191 Added: let* nodes = Resolvers.Tree.expand repository tree in
192 192 let* readme = find_readme repository tree in
193 Removed: Views.Repo.files context trail ?readme preloaded
193 Added: Views.Repo.files context trail ?readme nodes
194 194 | `Blob blob -> Views.Repo.file context trail blob
195 195
196 196 let branches repository context =
lib/resolvers.ml
index 3999e8c8..9c671dbf 100644..100644
@@ -360,12 +360,8 @@
360 360
361 361 module Tree = struct
362 362 type t = { entries : Entry.t list }
363 Added: type tree_node = { entry : Entry.t; children : tree_node list option }
363 364
364 Removed: type preloaded_entry = {
365 Removed: entry : Entry.t;
366 Removed: children : preloaded_entry list option;
367 Removed: }
368 Removed:
369 365 let to_t tree =
370 366 { entries = Store.Value.Tree.to_list tree |> List.map Entry.to_t }
371 367
@@ -387,8 +383,8 @@
387 383 let* hash = head_tree_hash repository in
388 384 of_hash repository hash
389 385
390 Removed: let preload repository tree =
391 Removed: let rec preload_entry (entry : Entry.t) =
386 Added: let expand repository tree =
387 Added: let rec expand_entry (entry : Entry.t) =
392 388 if entry.perm <> Entry.Dir then
393 389 Lwt_result.return { entry; children = None }
394 390 else collapse_single_subdirs entry.name entry.hash
@@ -413,10 +409,10 @@
413 409 if count >= 10 then
414 410 Lwt_result.return { entry = collapsed_entry; children = Some [] }
415 411 else
416 Removed: let* children = preload_entries entries in
412 Added: let* children = expand_entries entries in
417 413 Lwt_result.return
418 414 { entry = collapsed_entry; children = Some children }
419 Removed: and preload_entries entries =
415 Added: and expand_entries entries =
420 416 let is_hidden (e : Entry.t) =
421 417 String.length e.name > 0 && e.name.[0] = '.'
422 418 in
@@ -441,12 +437,12 @@
441 437 let rec go acc = function
442 438 | [] -> Lwt_result.return (List.rev acc)
443 439 | e :: rest ->
444 Removed: let* pe = preload_entry e in
440 Added: let* pe = expand_entry e in
445 441 go (pe :: acc) rest
446 442 in
447 443 go [] sorted
448 444 in
449 Removed: preload_entries tree.entries
445 Added: expand_entries tree.entries
450 446
451 447 let find_path repository target_hash =
452 448 let* target = hash_of_hex target_hash in
lib/resolvers.mli
index 44e9b389..e3d77c0f 100644..100644
@@ -87,14 +87,10 @@
87 87
88 88 module Tree : sig
89 89 type t = { entries : Entry.t list }
90 Added: type tree_node = { entry : Entry.t; children : tree_node list option }
90 91
91 Removed: type preloaded_entry = {
92 Removed: entry : Entry.t;
93 Removed: children : preloaded_entry list option;
94 Removed: }
95 Removed:
96 92 val head : repository -> (t, error) Lwt_result.t
97 Removed: val preload : repository -> t -> (preloaded_entry list, error) Lwt_result.t
93 Added: val expand : repository -> t -> (tree_node list, error) Lwt_result.t
98 94
99 95 val find_path :
100 96 repository -> string -> ((string * string) list, error) Lwt_result.t
lib/views/repo.ml
index dc96e73a..17f2f9e8 100644..100644
@@ -438,7 +438,7 @@
438 438 author_span;
439 439 ])
440 440
441 Removed: let rec li_of_preloaded repo (pe : Resolvers.Tree.preloaded_entry) =
441 Added: let rec li_of_tree_node repo (pe : Resolvers.Tree.tree_node) =
442 442 let entry = pe.entry in
443 443 let route = Routes.File (repo, entry.hash) in
444 444 let is_hidden = String.length entry.name > 0 && entry.name.[0] = '.' in
@@ -480,7 +480,7 @@
480 480 ];
481 481 ])
482 482 | Some children ->
483 Removed: (* Directory with <10 items — fully preloaded *)
483 Added: (* Directory with <10 items — fully expanded *)
484 484 HTML.(
485 485 li
486 486 [ class_ "tree-dir%s" hidden_class ]
@@ -497,11 +497,11 @@
497 497 ];
498 498 ul
499 499 [ class_ "tree-nested" ]
500 Removed: (List.map (li_of_preloaded repo) children);
500 Added: (List.map (li_of_tree_node repo) children);
501 501 ];
502 502 ])
503 503
504 Removed: let summary context (entries : Resolvers.Tree.preloaded_entry list) commits =
504 Added: let summary context (entries : Resolvers.Tree.tree_node list) commits =
505 505 let description_section =
506 506 if context.description = "" then HTML.null []
507 507 else HTML.(p [] [ txt "%s" context.description ])
@@ -510,7 +510,7 @@
510 510 HTML.
511 511 [
512 512 description_section;
513 Removed: ul [] (List.map (li_of_preloaded context.repo) entries);
513 Added: ul [] (List.map (li_of_tree_node context.repo) entries);
514 514 h3 [] [ txt "Latest commits" ];
515 515 ul [] (List.map (li_of_commit context.repo) commits);
516 516 ]
@@ -648,8 +648,7 @@
648 648 in
649 649 HTML.(span [ class_ "path-pill" ] (root_anchor :: segments))
650 650
651 Removed: let files context trail ?readme (entries : Resolvers.Tree.preloaded_entry list)
652 Removed: =
651 Added: let files context trail ?readme (entries : Resolvers.Tree.tree_node list) =
653 652 let pill = breadcrumb_pill context.repo trail in
654 653 let tb = toolbar [ pill ] in
655 654 let readme_section =
@@ -683,7 +682,7 @@
683 682 HTML.
684 683 [
685 684 tb;
686 Removed: ul [] (List.map (li_of_preloaded context.repo) entries);
685 Added: ul [] (List.map (li_of_tree_node context.repo) entries);
687 686 readme_section;
688 687 ]
689 688