(* -*- 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 ]