[OCaml] Mobile-friendly clone of cgit.
refactor deduplicate collect_repo_paths in handlers
The function was defined twice: once at top-level and once locally inside project_dir. Merged into a single version with an optional ~prefix parameter.
lib/handlers.ml
@@ -47,18 +47,22 @@
47
47
~root_title:(resolve_root_title config)
48
48
~nav_logo:config.Config.nav_logo
49
49
50
Removed:
let collect_repo_paths nodes =
51
Removed:
let rec walk prefix acc = function
50
Added:
let collect_repo_paths ?(prefix = "") nodes =
51
Added:
let rec walk current_prefix acc = function
52
52
| Resolvers.Repo { repo_name; _ } ->
53
53
let full =
54
Removed:
if prefix = "" then repo_name else prefix ^ "/" ^ repo_name
54
Added:
if current_prefix = "" then repo_name
55
Added:
else current_prefix ^ "/" ^ repo_name
55
56
in
56
57
full :: acc
57
58
| Resolvers.Directory (dir_name, children) ->
58
Removed:
let p = if prefix = "" then dir_name else prefix ^ "/" ^ dir_name in
59
Added:
let p =
60
Added:
if current_prefix = "" then dir_name
61
Added:
else current_prefix ^ "/" ^ dir_name
62
Added:
in
59
63
List.fold_left (walk p) acc children
60
64
in
61
Removed:
List.fold_left (walk "") [] nodes
65
Added:
List.fold_left (walk prefix) [] nodes |> List.rev
62
66
63
67
let root config _request =
64
68
match Resolvers.scan_project_root config with
@@ -285,17 +289,7 @@
285
289
match Resolvers.scan_subdirectory config subdir with
286
290
| Ok nodes ->
287
291
let open Lwt.Syntax in
288
Removed:
let rec collect_repo_paths prefix = function
289
Removed:
| Resolvers.Repo { repo_name; _ } ->
290
Removed:
let full =
291
Removed:
if prefix = "" then repo_name else prefix ^ "/" ^ repo_name
292
Removed:
in
293
Removed:
[ full ]
294
Removed:
| Resolvers.Directory (dir_name, children) ->
295
Removed:
let p = if prefix = "" then dir_name else prefix ^ "/" ^ dir_name in
296
Removed:
List.concat_map (collect_repo_paths p) children
297
Removed:
in
298
Removed:
let repo_paths = List.concat_map (collect_repo_paths subdir) nodes in
292
Added:
let repo_paths = collect_repo_paths ~prefix:subdir nodes in
299
293
let* dates =
300
294
Lwt_list.map_p
301
295
(fun path ->