/usr/lib/ocaml/oasis/OASISValues.mli is in liboasis-ocaml-dev 0.4.10-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | (******************************************************************************)
(* OASIS: architecture for building OCaml libraries and applications *)
(* *)
(* Copyright (C) 2011-2016, Sylvain Le Gall *)
(* Copyright (C) 2008-2011, OCamlCore SARL *)
(* *)
(* This library is free software; you can redistribute it and/or modify it *)
(* under the terms of the GNU Lesser General Public License as published by *)
(* the Free Software Foundation; either version 2.1 of the License, or (at *)
(* your option) any later version, with the OCaml static compilation *)
(* exception. *)
(* *)
(* This library is distributed in the hope that it will be useful, but *)
(* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *)
(* or FITNESS FOR A PARTICULAR PURPOSE. See the file COPYING for more *)
(* details. *)
(* *)
(* You should have received a copy of the GNU Lesser General Public License *)
(* along with this library; if not, write to the Free Software Foundation, *)
(* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *)
(******************************************************************************)
(** Parse, print and check values
This module allows to parse values that should match a particular content
(URL, list).
The whole module is {b not exported}.
@author Sylvain Le Gall
*)
(** {2 Types and exception} *)
(** Definition of a value. *)
type 'a t =
{
parse: ctxt:OASISContext.t -> string -> 'a;
(** Parse a string into value *)
update: 'a -> 'a -> 'a;
(** Merge two values into one *)
print: 'a -> string;
(** Convert a value to string *)
}
(** The value exist but there is no easy way to represent it.
*)
exception Not_printable
(** It is not possible to combine values.
*)
exception Not_combinable
(** Always raise {!Not_combinable}.
*)
val update_fail: 'a -> 'b -> 'c
(** {2 Basic values and combinators} *)
(** Hidden value to build phantom data storage, cannot set/get
it using string.
*)
val blackbox: 'a t
(** String value. *)
val string: string t
(** String value, must not be "". *)
val string_not_empty: string t
(** Boolean value, use [bool_of_string] to parse. *)
val boolean: bool t
(** Extra check to see if the string value, can be expanded
using [Buffer.add_substitute] rules.
*)
val expandable: string t -> string t
(** [dot_separated v] When parsing split the input string using '.' separator
and apply [v.parse]. Merge by concatenate two values, and print by joining
[v.print] generated strings using a '.' separator. Don't strip whitespaces.
*)
val dot_separated: 'a t -> 'a list t
(** Same as {!dot_separated} using ',' as separator. Strip whitespaces before
and after the input string.
*)
val comma_separated: 'a t -> 'a list t
(** Same {!dot_separated} using '\n' as separator. Strip whitespaces before and
after the input string.
*)
val newline_separated: 'a t -> 'a list t
(** Same as {!dot_separated} using blanks as separator. *)
val space_separated: string list t
(** [with_optional_parentheses v_main v_opt] Combine two values. The input
string ["abcd (defg)"] is split between the part not between parentheses
and the one between. [v_main] is applied to the first one and [v_opt] to
the latter. If no parentheses is found, only apply [v_main].
*)
val with_optional_parentheses: 'a t -> 'b t -> ('a * 'b option) t
(** Optional value. *)
val opt: 'a t -> 'a option t
(** [choices nm lst] Value that must be in a list of predefined choices.
Find the right association in [lst], comparison is case insensitive.
If something failed output a message using [nm] as the name of the
value represented.
*)
val choices: (unit -> string) -> (string * 'a) list -> 'a t
(** {2 Standard values} *)
(** URL value. *)
val url: string t
(** Copyright value. *)
val copyright: string t
(** File value. *)
val file: string t
(** File list value. *)
val files: string list t
(** File with glob value. *)
val file_glob: string t
(** Directory value. *)
val directory: string t
(** Module list value. *)
val modules: string list t
(** Category list value. *)
val categories: string list t
(** Findlib package name value, without its path. *)
val findlib_name: string t
(** Findlib package name with path value, e.g. oasis.base. *)
val findlib_full: string t
(** Internal library. *)
val internal_library: string t
(** Command line. *)
val command_line: (string * string list) t
(** Arguments of command line programs. See {!OASISUtils.POSIX.split}
for more information. *)
val command_line_options: string list t
|