[OCaml] Mobile-friendly clone of cgit.
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
Changed files
lib/handlers.ml
@@ -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
@@ -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
@@ -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
@@ -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