From 7349bd0176b8a8ced3a017bb5d0e9ebb30570722 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 29 Jan 2007 14:23:09 +0000 Subject: New primitives: * `sub' to subtract two numbers. * `stringLength' to get the length of a string. * `substring' to get a substring of a string. These should be enough to allow most string operations to be expressed. --- tests/lang/lib.nix | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'tests/lang/lib.nix') diff --git a/tests/lang/lib.nix b/tests/lang/lib.nix index f888453ffbea..ec705299a7a9 100644 --- a/tests/lang/lib.nix +++ b/tests/lang/lib.nix @@ -1,18 +1,26 @@ +with builtins; + rec { fold = op: nul: list: if list == [] then nul - else op (builtins.head list) (fold op nul (builtins.tail list)); + else op (head list) (fold op nul (tail list)); concat = fold (x: y: x + y) ""; flatten = x: - if builtins.isList x + if isList x then fold (x: y: (flatten x) ++ y) [] x else [x]; - sum = fold (x: y: builtins.add x y) 0; + sum = fold (x: y: add x y) 0; + + hasSuffix = ext: fileName: + let lenFileName = stringLength fileName; + lenExt = stringLength ext; + in !(lessThan lenFileName lenExt) && + substring (sub lenFileName lenExt) lenFileName fileName == ext; } -- cgit 1.4.1