summaryrefslogtreecommitdiff
path: root/lib/routes.ml
blob: 5c93ce42d56064027d540b5eee45c4abb871acbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(* -*- mode: tuareg; -*- *)

type t =
  | Root
  | Repo of string
  | Commits of string
  | Commit of string * string
  | Files of string
  | File of string * string
  | Branches of string
  | Tags of string
  | Readme of string

let%path root_path = "/"
let%path repo_path = "/%s/summary/"
let%path commits_path = "/%s/commits/"
let%path commit_path = "/%s/commit/%s"
let%path files_path = "/%s/files/"
let%path file_path = "/%s/file/%s"
let%path branches_path = "/%s/branches/"
let%path tags_path = "/%s/tags/"
let%path readme_path = "/%s/README"

let link_to route ?(other_attrs = []) contents =
  let open Dream_html in
  let open HTML in
  let path = function
    | Root -> path_attr href root_path
    | Repo repo -> path_attr href repo_path repo
    | Commits repo -> path_attr href commits_path repo
    | Commit (repo, commit) -> path_attr href commit_path repo commit
    | Files repo -> path_attr href files_path repo
    | File (repo, hash) -> path_attr href file_path repo hash
    | Branches repo -> path_attr href branches_path repo
    | Tags repo -> path_attr href tags_path repo
    | Readme repo -> path_attr href readme_path repo
  in
  a (path route :: other_attrs) [ contents ]
Copyright 2019--2025 Marius PETER