[OCaml] Mobile-friendly clone of cgit.
refactor extract relative_time into shared Time_fmt module
Factor out the duplicated relative_time function from views/repo.ml and views/root.ml into a new views/time_fmt.ml module.
Changed files
lib/views/repo.ml
@@ -324,24 +324,6 @@
324
324
Printf.sprintf "%04d-%02d-%02d %02d:%02d" (tm.tm_year + 1900) (tm.tm_mon + 1)
325
325
tm.tm_mday tm.tm_hour tm.tm_min
326
326
327
Removed:
let relative_time (date, _) =
328
Removed:
let seconds = Unix.time () -. Int64.to_float date |> int_of_float in
329
Removed:
let minutes = seconds / 60 in
330
Removed:
let hours = minutes / 60 in
331
Removed:
let days = hours / 24 in
332
Removed:
let months = days / 30 in
333
Removed:
let years = months / 12 in
334
Removed:
let quantity value singular =
335
Removed:
Printf.sprintf "%d %s%s ago" value singular (if value = 1 then "" else "s")
336
Removed:
in
337
Removed:
match seconds with
338
Removed:
| s when s < 60 -> "just now"
339
Removed:
| _ when minutes < 60 -> quantity minutes "minute"
340
Removed:
| _ when hours < 24 -> quantity hours "hour"
341
Removed:
| _ when days < 30 -> quantity days "day"
342
Removed:
| _ when months < 12 -> quantity months "month"
343
Removed:
| _ -> quantity years "year"
344
Removed:
345
327
let li_of_commit ?(hide_pill = false) repo (commit : Resolvers.Commit.t) =
346
328
let message = parse_commit_message commit.message in
347
329
let commit_type, commit_title = parse_conventional message.summary in
@@ -370,7 +352,7 @@
370
352
HTML.(
371
353
span
372
354
[ class_ "commit-ago" ]
373
Removed:
[ txt "%s" (relative_time commit.author.date) ])
355
Added:
[ txt "%s" (Time_fmt.relative_time commit.author.date) ])
374
356
in
375
357
HTML.(
376
358
li []
lib/views/root.ml
@@ -2,31 +2,14 @@
2
2
3
3
open Dream_html
4
4
5
Removed:
let relative_time (date, _) =
6
Removed:
let seconds = Unix.time () -. Int64.to_float date |> int_of_float in
7
Removed:
let minutes = seconds / 60 in
8
Removed:
let hours = minutes / 60 in
9
Removed:
let days = hours / 24 in
10
Removed:
let months = days / 30 in
11
Removed:
let years = months / 12 in
12
Removed:
let quantity value singular =
13
Removed:
Printf.sprintf "%d %s%s ago" value singular (if value = 1 then "" else "s")
14
Removed:
in
15
Removed:
match seconds with
16
Removed:
| s when s < 60 -> "just now"
17
Removed:
| _ when minutes < 60 -> quantity minutes "minute"
18
Removed:
| _ when hours < 24 -> quantity hours "hour"
19
Removed:
| _ when days < 30 -> quantity days "day"
20
Removed:
| _ when months < 12 -> quantity months "month"
21
Removed:
| _ -> quantity years "year"
22
Removed:
23
5
let render ~user ~root_title repositories =
24
6
let li_of_repo (repo_name, date) =
25
7
let ago_span =
26
8
match date with
27
9
| None -> HTML.null []
28
10
| Some d ->
29
Removed:
HTML.(span [ class_ "commit-ago" ] [ txt "%s" (relative_time d) ])
11
Added:
HTML.(
12
Added:
span [ class_ "commit-ago" ] [ txt "%s" (Time_fmt.relative_time d) ])
30
13
in
31
14
HTML.(
32
15
li []
lib/views/time_fmt.ml
@@ -0,0 +1,21 @@
1
Added:
(* -*- mode: tuareg; -*- *)
2
Added:
3
Added:
(** Human-readable relative timestamps. *)
4
Added:
5
Added:
let relative_time (date, _) =
6
Added:
let seconds = Unix.time () -. Int64.to_float date |> int_of_float in
7
Added:
let minutes = seconds / 60 in
8
Added:
let hours = minutes / 60 in
9
Added:
let days = hours / 24 in
10
Added:
let months = days / 30 in
11
Added:
let years = months / 12 in
12
Added:
let quantity value singular =
13
Added:
Printf.sprintf "%d %s%s ago" value singular (if value = 1 then "" else "s")
14
Added:
in
15
Added:
match seconds with
16
Added:
| s when s < 60 -> "just now"
17
Added:
| _ when minutes < 60 -> quantity minutes "minute"
18
Added:
| _ when hours < 24 -> quantity hours "hour"
19
Added:
| _ when days < 30 -> quantity days "day"
20
Added:
| _ when months < 12 -> quantity months "month"
21
Added:
| _ -> quantity years "year"