From 6b4cd6673ad1c7b7203002040ccdbacec818135a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 19 Mar 2012 18:04:47 +0000 Subject: * Add a utility function "versionOlder" to compare two version strings. svn path=/nixpkgs/trunk/; revision=33267 --- pkgs/lib/strings.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'pkgs/lib/strings.nix') diff --git a/pkgs/lib/strings.nix b/pkgs/lib/strings.nix index 73520a949c1..8f918acf7b2 100644 --- a/pkgs/lib/strings.nix +++ b/pkgs/lib/strings.nix @@ -82,15 +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., @@ -105,10 +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"]. @@ -133,6 +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". @@ -146,6 +152,13 @@ rec { else s; + + # Why do we need this if we have baseNameOf? basename = s: lib.last (splitString "/" s); + + # Return true iff string v1 denotes a version older than v2. + versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1; + + } -- cgit 1.4.1