Module Fpath_sexp0.Absolute_path

type t = Fpath.t

The type of absolute paths.

Note: Some versions of odoc may display this as type t = Fpath.t, but the actual definition is: type t = private Fpath.t, which enforces the following invariants:

  • The path is absolute (starts with "/")
  • The path is normalized via Fpath.normalize, so all ".." segments are resolved
val sexp_of_t : t -> Sexplib0.Sexp.t
val compare : t -> t -> int
val equal : t -> t -> bool
val hash : t -> int
val seeded_hash : int -> t -> int
val to_fpath : t -> Fpath.t
val to_string : t -> string
val of_fpath : Fpath.t -> t option

of_fpath p returns p normalized via Fpath.normalize and classified as an absolute path. Returns None if p is not an absolute path.

val of_string : string -> (t, [ `Msg of string ]) Stdlib.Result.t

This is a convenient wrapper to compose Fpath.of_string and of_fpath.

val v : string -> t

v str returns a t or raises Invalid_argument.

val root : t

The root path "/".

val append : t -> Fpath.t -> t

append abs rel appends relative path rel to absolute path abs and normalizes the result via Fpath.normalize.

The result is guaranteed to stay at or below abs in the directory tree, since relative_path values cannot escape upward.

val extend : t -> Fsegment.t -> t

extend abs seg appends filesystem segment seg to absolute path abs and normalizes the result via Fpath.normalize.

val parent : t -> t option
val chop_prefix : t -> prefix:t -> Fpath.t option

chop_prefix t ~prefix removes prefix prefix from path t. Returns Some result where result is t with prefix removed, or None if prefix is not actually a prefix of t.

When t equals prefix, returns Some empty where empty is the empty relative path "./".

val chop_suffix : t -> suffix:Fpath.t -> t option

chop_suffix t ~suffix removes suffix suffix from path t.

Returns Some result where result is t with suffix removed, or None if suffix is not actually a suffix of t. When suffix is the empty relative path "./", returns Some t unchanged.

When a non-empty suffix is successfully removed, the result is a directory path.

val is_dir_path : t -> bool
val to_dir_path : t -> t
val rem_empty_seg : t -> t
val relativize : root:t -> Fpath.t -> t

Converts a Path.t to an Absolute_path.t:

  • If the path is already absolute, that's the answer.
  • If the path is relative, it is made absolute by appending it to root.