diff --git a/pkgs/lib/strings.nix b/pkgs/lib/strings.nix index 5f2670913e24..071bb2c995b3 100644 --- a/pkgs/lib/strings.nix +++ b/pkgs/lib/strings.nix @@ -17,7 +17,7 @@ rec { # Map a function over a list and concatenate the resulting strings. concatMapStrings = f: list: concatStrings (map f list); concatImapStrings = f: list: concatStrings (lib.imap f list); - + # Place an element between each element of a list, e.g., # `intersperse "," ["a" "b" "c"]' returns ["a" "," "b" "," "c"]. @@ -37,7 +37,7 @@ rec { # Construct a Unix-style search path consisting of each `subDir" # directory of the given list of packages. For example, # `makeSearchPath "bin" ["x" "y" "z"]' returns "x/bin:y/bin:z/bin". - makeSearchPath = subDir: packages: + makeSearchPath = subDir: packages: concatStringsSep ":" (map (path: path + "/" + subDir) packages); @@ -48,13 +48,13 @@ rec { # Idem for Perl search paths. makePerlPath = makeSearchPath "lib/perl5/site_perl"; - + # Dependening on the boolean `cond', return either the given string # or the empty string. optionalString = cond: string: if cond then string else ""; - + # Determine whether a filename ends in the given suffix. hasSuffix = ext: fileName: let lenFileName = stringLength fileName; @@ -74,7 +74,7 @@ rec { then [] else map (p: substring p 1 s) (lib.range 0 (sub l 1)); - + # Manipulate a string charcater by character and replace them by strings # before concatenating the results. stringAsChars = f: s: @@ -82,18 +82,18 @@ rec { map f (stringToCharacters s) ); - + # same as vim escape function. # Each character contained in list is prefixed by "\" escape = list : string : stringAsChars (c: if lib.elem c list then "\\${c}" else c) string; - + # still ugly slow. But more correct now # [] for zsh escapeShellArg = lib.escape (stringToCharacters "\\ ';$`()|<>\t*[]"); - + # replace characters by their substitutes. This function is equivalent to # the `tr' command except that one character can be replace by multiple # ones. e.g., @@ -108,12 +108,12 @@ rec { in stringAsChars subst s; - + # Compares strings not requiring context equality # Obviously, a workaround but works on all Nix versions eqStrings = a: b: (a+(substring 0 0 b)) == ((substring 0 0 a)+b); - + # Cut a string with a separator and produces a list of strings which were # separated by this separator. e.g., # `splitString "." "foo.bar.baz"' returns ["foo" "bar" "baz"]. @@ -138,7 +138,7 @@ rec { in recurse 0 0; - + # return the suffix of the second argument if the first argument match its # prefix. e.g., # `removePrefix "foo." "foo.bar.baz"' returns "bar.baz". @@ -152,9 +152,7 @@ rec { else s; - # Return true iff string v1 denotes a version older than v2. versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1; - }