From 63d293f50a0a0940c86f2080554fbe585f70a96e Mon Sep 17 00:00:00 2001 From: Michele Alberti <michele.alberti@cea.fr> Date: Fri, 17 Jan 2020 09:18:07 +0100 Subject: [PATCH] Add concat function for normalized filepaths. --- src/kernel_services/plugin_entry_points/plugin.ml | 2 +- src/libraries/datatype/datatype.ml | 1 + src/libraries/datatype/datatype.mli | 1 + src/libraries/utils/filepath.ml | 2 ++ src/libraries/utils/filepath.mli | 4 ++++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/kernel_services/plugin_entry_points/plugin.ml b/src/kernel_services/plugin_entry_points/plugin.ml index 80fc744acfe..798d70dbf8e 100644 --- a/src/kernel_services/plugin_entry_points/plugin.ml +++ b/src/kernel_services/plugin_entry_points/plugin.ml @@ -381,7 +381,7 @@ struct let file ?error f = let dir = dir ?error () in - Datatype.Filepath.of_string ((dir :> string) ^ "/" ^ f) + Datatype.Filepath.concat dir ("/" ^ f) end diff --git a/src/libraries/datatype/datatype.ml b/src/libraries/datatype/datatype.ml index 0e55cdc83a9..417d5f8ea37 100644 --- a/src/libraries/datatype/datatype.ml +++ b/src/libraries/datatype/datatype.ml @@ -1944,6 +1944,7 @@ module Filepath = struct let dummy = Filepath.Normalized.unknown let of_string ?existence ?base_name s = Filepath.Normalized.of_string ?existence ?base_name s + let concat ?existence t s = Filepath.Normalized.concat ?existence t s let pp_abs = Filepath.Normalized.pp_abs end diff --git a/src/libraries/datatype/datatype.mli b/src/libraries/datatype/datatype.mli index 4243c2b50b1..9d659f95aaa 100644 --- a/src/libraries/datatype/datatype.mli +++ b/src/libraries/datatype/datatype.mli @@ -349,6 +349,7 @@ val integer: Integer.t Type.t module Filepath: sig include S_with_collections with type t = Filepath.Normalized.t val of_string: ?existence:Filepath.existence -> ?base_name:string -> string -> t + val concat: ?existence:Filepath.existence -> t -> string -> t val pp_abs: Format.formatter -> t -> unit val dummy: t end diff --git a/src/libraries/utils/filepath.ml b/src/libraries/utils/filepath.ml index 2a181a56473..1fc3781fcc9 100644 --- a/src/libraries/utils/filepath.ml +++ b/src/libraries/utils/filepath.ml @@ -235,7 +235,9 @@ let is_relative ?base_name file_name = module Normalized = struct type t = string + let of_string ?existence ?base_name s = normalize ?existence ?base_name s + let concat ?existence t s = normalize ?existence (t ^ s) let to_pretty_string s = pretty s let equal : t -> t -> bool = (=) let compare = String.compare diff --git a/src/libraries/utils/filepath.mli b/src/libraries/utils/filepath.mli index e1be01aac9c..cce18b7d45d 100644 --- a/src/libraries/utils/filepath.mli +++ b/src/libraries/utils/filepath.mli @@ -103,6 +103,10 @@ module Normalized: sig *) val of_string: ?existence:existence -> ?base_name:string -> string -> t + (** @return the normalized path resulting from the concatenation of the given + path and string. *) + val concat: ?existence:existence -> t -> string -> t + (** [to_pretty_string p] returns [p] prettified, that is, a relative path-like string. Note that this prettified string may contain symbolic dirs and is thus -- GitLab