Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Bos_setup.Patinclude module type of struct include Bos.Pat endtype t = Bos.Pat.tThe type for patterns.
val v : string -> tv s is a pattern from the string s.
val empty : tempty is an empty pattern.
val dom : t -> Astring.String.Set.tdom p is the set of variables in p.
compare p p' is Pervasives.compare p p'.
val of_string : string -> (t, [> Rresult.R.msg ]) Result.resultof_string s parses s according to the pattern syntax (i.e. a literal '$' must be represented by "$$" in s).
val to_string : t -> stringto_string p converts p to a string according to the pattern syntax (i.e. a literal '$' will be represented by "$$").
val pp : Format.formatter -> t -> unitpp ppf p prints p on ppf according to the pattern syntax.
val dump : Format.formatter -> t -> unitdump ppf p prints p as a syntactically valid OCaml string on ppf.
Note. Substitution replaces variables with data, i.e. strings. It cannot substitute variables with variables.
type defs = string Astring.String.Map.tType type for variable definitions. Maps pattern variable names to strings.
subst ~undef defs p tries to substitute variables in p by their value. First a value is looked up in defs and if not found in undef. undef defaults to (fun _ -> None).
format ~undef defs p substitutes all variables in p with data. First a value is looked up in defs and if not found in undef (defaults to fun _ -> ""). The resulting string is not in pattern syntax (i.e. a literal '$' is represented by '$' in the result).
Pattern variables greedily match from zero to more bytes from left to right. This is .* in regexp speak.
val matches : t -> string -> boolmatches p s is true iff the string s matches p. Here are a few examples:
matches (v "$(mod).mli") "string.mli" is true.matches (v "$(mod).mli") "string.mli " is false.matches (v "$(mod).mli") ".mli" is true.matches (v "$(mod).$(suff)") "string.mli" is true.matches (v "$(mod).$(suff)") "string.mli " is true.query ~init p s is like matches except that a matching string returns a map from each pattern variable to its matched part in the string (mappings are added to init, defaults to String.Map.empty) or None if s doesn't match p. If a variable appears more than once in pat the first match is returned in the map.