@@ -6060,13 +6060,6 @@ val combine :
6060
6060
6061
6061
6062
6062
6063
-
6064
-
6065
-
6066
-
6067
- val chop_all_extensions_if_any :
6068
- string -> string
6069
-
6070
6063
(**
6071
6064
{[
6072
6065
get_extension "a.txt" = ".txt"
@@ -6254,10 +6247,7 @@ let combine path1 path2 =
6254
6247
6255
6248
6256
6249
6257
- let rec chop_all_extensions_if_any fname =
6258
- match Filename.chop_extension fname with
6259
- | x -> chop_all_extensions_if_any x
6260
- | exception _ -> fname
6250
+
6261
6251
6262
6252
let get_extension x =
6263
6253
let pos = Ext_string.rindex_neg x '.' in
@@ -7325,6 +7315,10 @@ val new_extension:
7325
7315
string ->
7326
7316
string ->
7327
7317
string
7318
+
7319
+ val chop_all_extensions_maybe:
7320
+ string ->
7321
+ string
7328
7322
end = struct
7329
7323
#1 "ext_filename.ml"
7330
7324
(* Copyright (C) 2015-2016 Bloomberg Finance L.P.
@@ -7385,6 +7379,17 @@ let chop_extension_maybe name =
7385
7379
else search_dot (i - 1) in
7386
7380
search_dot (String.length name - 1)
7387
7381
7382
+ let chop_all_extensions_maybe name =
7383
+ let rec search_dot i last =
7384
+ if i < 0 || is_dir_sep (String.unsafe_get name i) then
7385
+ (match last with
7386
+ | None -> name
7387
+ | Some i -> String.sub name 0 i)
7388
+ else if String.unsafe_get name i = '.' then
7389
+ search_dot (i - 1) (Some i)
7390
+ else search_dot (i - 1) last in
7391
+ search_dot (String.length name - 1) None
7392
+
7388
7393
7389
7394
let new_extension name (ext : string) =
7390
7395
let rec search_dot name i ext =
@@ -7400,6 +7405,19 @@ let new_extension name (ext : string) =
7400
7405
search_dot name (String.length name - 1) ext
7401
7406
7402
7407
7408
+ let generic_basename name =
7409
+ let rec find_end n =
7410
+ if n < 0 then String.sub name 0 1
7411
+ else if is_dir_sep name.[n] then find_end (n - 1)
7412
+ else find_beg n (n + 1)
7413
+ and find_beg n p =
7414
+ if n < 0 then String.sub name 0 p
7415
+ else if is_dir_sep name.[n] then String.sub name (n + 1) (p - n - 1)
7416
+ else find_beg (n - 1) p
7417
+ in
7418
+ if name = ""
7419
+ then "."
7420
+ else find_end (String.length name - 1)
7403
7421
end
7404
7422
module Ext_modulename : sig
7405
7423
#1 "ext_modulename.mli"
0 commit comments