Source file dune_section.ml

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
39
40
41
42
43
44
type t =
  | Lib
  | Lib_root
  | Libexec
  | Libexec_root
  | Bin
  | Sbin
  | Toplevel
  | Share
  | Share_root
  | Etc
  | Doc
  | Stublibs
  | Man
  | Misc

let all =
  [ (Lib, "lib")
  ; (Lib_root, "lib_root")
  ; (Libexec, "libexec")
  ; (Libexec_root, "libexec_root")
  ; (Bin, "bin")
  ; (Sbin, "sbin")
  ; (Toplevel, "toplevel")
  ; (Share, "share")
  ; (Share_root, "share_root")
  ; (Etc, "etc")
  ; (Doc, "doc")
  ; (Stublibs, "stublibs")
  ; (Man, "man")
  ; (Misc, "misc")
  ]

let to_string t = List.assoc t all

let rec of_string x = function
  | [] -> None
  | (s, x') :: xs ->
    if x' = x then
      Some s
    else
      of_string x xs

let of_string x = of_string x all