(* -*- mode: tuareg; -*- *) type t = | Root | Repo of string | Log of string | Files of string | Refs of string | Commit of string * string | File of string * string let%path root_path = "/" let%path repo_path = "/%s/summary/" let%path log_path = "/%s/log/" let%path files_path = "/%s/files/" let%path refs_path = "/%s/refs/" let%path commit_path = "/%s/commit/%s" let%path file_path = "/%s/file/%s" 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 | Log repo -> path_attr href log_path repo | Files repo -> path_attr href files_path repo | Refs repo -> path_attr href refs_path repo | Commit (repo, commit) -> path_attr href commit_path repo commit | File (repo, hash) -> path_attr href file_path repo hash in a (path route :: other_attrs) [ contents ]