add std/strings.nix
This commit is contained in:
parent
f6c33420ea
commit
6c70ee589e
2 changed files with 40 additions and 0 deletions
|
|
@ -2,11 +2,13 @@
|
||||||
attrs = import ./attrs.nix args;
|
attrs = import ./attrs.nix args;
|
||||||
functions = import ./functions.nix args;
|
functions = import ./functions.nix args;
|
||||||
lists = import ./lists.nix args;
|
lists = import ./lists.nix args;
|
||||||
|
strings = import ./strings.nix args;
|
||||||
trivial = import ./trivial.nix args;
|
trivial = import ./trivial.nix args;
|
||||||
in
|
in
|
||||||
attrs.mergeAttrsList [
|
attrs.mergeAttrsList [
|
||||||
attrs
|
attrs
|
||||||
functions
|
functions
|
||||||
lists
|
lists
|
||||||
|
strings
|
||||||
trivial
|
trivial
|
||||||
]
|
]
|
||||||
|
|
|
||||||
38
nib/std/strings.nix
Normal file
38
nib/std/strings.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{nib, ...}: let
|
||||||
|
inherit
|
||||||
|
(builtins)
|
||||||
|
isPath
|
||||||
|
substring
|
||||||
|
stringLength
|
||||||
|
;
|
||||||
|
|
||||||
|
inherit
|
||||||
|
(nib.trivial)
|
||||||
|
warnIf
|
||||||
|
;
|
||||||
|
in rec {
|
||||||
|
# re-export builtin string methods
|
||||||
|
inherit
|
||||||
|
substring
|
||||||
|
stringLength
|
||||||
|
;
|
||||||
|
|
||||||
|
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
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue