include module type of struct include Bos.Pat end
Patterns
type t = Bos.Pat.t
The type for patterns.
val v : string -> t
v s
is a pattern from the string s
.
- raises Invalid_argument
if
s
is not a valid pattern. Useof_string
to deal with errors.
val empty : t
empty
is an empty pattern.
val dom : t -> Astring.String.Set.t
dom p
is the set of variables in p
.
val of_string : string -> (t, [> Rresult.R.msg ]) Result.result
of_string s
parses s
according to the pattern syntax (i.e. a literal '$'
must be represented by "$$"
in s
).
val to_string : t -> string
to_string p
converts p
to a string according to the pattern syntax (i.e. a literal '$'
will be represented by "$$"
).
val pp : Stdlib.Format.formatter -> t -> unit
pp ppf p
prints p
on ppf
according to the pattern syntax.
val dump : Stdlib.Format.formatter -> t -> unit
dump ppf p
prints p
as a syntactically valid OCaml string on ppf
.
Substitution
type defs = string Astring.String.Map.t
Type 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).
Matching
val matches : t -> string -> bool
matches p s
is true
iff the string s
matches p
. Here are a few examples:
matches (v "$(mod).mli") "string.mli"
istrue
.matches (v "$(mod).mli") "string.mli "
isfalse
.matches (v "$(mod).mli") ".mli"
istrue
.matches (v "$(mod).$(suff)") "string.mli"
istrue
.matches (v "$(mod).$(suff)") "string.mli "
istrue
.
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.