amall / src / filepath.mli

(* вид пути: *)
type abs = [= `Abs ]
 and rel = [= `Rel ]
 and unk = [= `Abs | `Rel ]
;

(* путь в виде значения приватного типа: *)
type t +'kind = private ('kind * list string)
;

(* алиасы типов, чтобы избежать [Filepath.t Filepath.abs]. *)
type t_abs = t abs
 and t_rel = t rel
 and t_unk = t unk
;

(* корень, абсолютный путь *)
value the_root : t abs;

(* создать путь из списка сегментов: *)
value of_segs : list string -> t unk;

(* создать путь из строки: *)
value of_string : string -> t unk;

(* классифицировать путь: *)
value classify : t [= abs | rel | unk] -> [= `Abs of t abs | `Rel of t rel];

(* выдать строку из пути: *)
value to_string : t 'a -> string;

(* выдать список сегментов пути (для абсолютных путей первый всегда ""): *)
value to_segs : t 'a -> list string;

(* список сегментов пути из строки *)
value segs_of_string : string -> list string;

(* [abs ~base path] резолвит [path] относительно абсолютного пути [base],
   если [path] является относительным путём: *)
value abs : ~base:(t abs) -> t [= abs | rel | unk] -> t abs;

(* обрезать из абсолютного пути всё, что пытается выйти выше корня: *)
value not_above_root : t abs -> t abs;

(* результат выполнения функции [root ~base path] аналогичен получению
   полного пути в случае, если сделали [chroot base] и внутри
   обращаются к пути [path] *)
value root : ~base:(t abs) -> t abs -> t abs;

(* [rel_from ~base p] равно относительному пути, по которому
   доступен путь [p], если перейти в директорию [base] *)
value rel_from : ~base:(t abs) -> t abs -> t rel;

(* [append path seg] добавляет сегмент [seg] к пути [path].
   специальные случаи:
   - добавление пустой строки или "." не меняет [path],
   - добавление ".." вызывает исключение
     [Invalid_argument "Filepath.append"] *)
value append : t 'a -> string -> t 'a;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.