removeSuffix
lib.removeSuffix
Docs pulled from | This Revision | 10 minutes ago
Return a string without the specified suffix, if the suffix matches.
Inputs
suffix
- Suffix to remove if it matches
str
- Input string
Type
removeSuffix :: string -> string -> string
Examples
lib.strings.removeSuffix
usage example
removeSuffix "front" "homefront"
=> "home"
removeSuffix "xxx" "homefront"
=> "homefront"
Noogle detected
Implementation
The following is the current implementation of this function.
removeSuffix =
suffix: str:
# Before 23.05, paths would be copied to the store before converting them
# to strings and comparing. This was surprising and confusing.
warnIf (isPath suffix)
''
lib.strings.removeSuffix: The first argument (${toString suffix}) is a path value, but only strings are supported.
There is almost certainly a bug in the calling code, since this function never removes any suffix in such a case.
This function also copies the path to the Nix store, which may not be what you want.
This behavior is deprecated and will throw an error in the future.''
(
let
sufLen = stringLength suffix;
sLen = stringLength str;
in
if sufLen <= sLen && suffix == substring (sLen - sufLen) sufLen str then
substring 0 (sLen - sufLen) str
else
str
);