[OCaml] Mobile-friendly clone of cgit.
feat sort unhidden entries before hidden in directory listings
Within each group (directories, then files), entries whose names start with '.' are now sorted after non-hidden entries. This gives the expected ordering: visible directories first, hidden directories, visible files, hidden files.
lib/resolvers.ml
@@ -417,15 +417,25 @@
417
417
Lwt_result.return
418
418
{ entry = collapsed_entry; children = Some children }
419
419
and preload_entries entries =
420
Added:
let is_hidden (e : Entry.t) =
421
Added:
String.length e.name > 0 && e.name.[0] = '.'
422
Added:
in
420
423
let sorted =
421
424
List.sort
422
425
(fun (a : Entry.t) (b : Entry.t) ->
423
426
match (a.perm, b.perm) with
424
Removed:
| (Entry.Dir, Entry.Dir | _, _) when a.perm = b.perm ->
425
Removed:
String.compare a.name b.name
427
Added:
| Entry.Dir, Entry.Dir ->
428
Added:
let ha = is_hidden a and hb = is_hidden b in
429
Added:
if ha = hb then String.compare a.name b.name
430
Added:
else if ha then 1
431
Added:
else -1
426
432
| Entry.Dir, _ -> -1
427
433
| _, Entry.Dir -> 1
428
Removed:
| _, _ -> String.compare a.name b.name)
434
Added:
| _, _ ->
435
Added:
let ha = is_hidden a and hb = is_hidden b in
436
Added:
if ha = hb then String.compare a.name b.name
437
Added:
else if ha then 1
438
Added:
else -1)
429
439
entries
430
440
in
431
441
let rec go acc = function