aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/lib/strings.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/lib/strings.nix')
-rw-r--r--nixpkgs/lib/strings.nix33
1 files changed, 25 insertions, 8 deletions
diff --git a/nixpkgs/lib/strings.nix b/nixpkgs/lib/strings.nix
index 74e3eaa0722..9fa9f023561 100644
--- a/nixpkgs/lib/strings.nix
+++ b/nixpkgs/lib/strings.nix
@@ -612,6 +612,22 @@ rec {
*/
fixedWidthNumber = width: n: fixedWidthString width "0" (toString n);
+ /* Convert a float to a string, but emit a warning when precision is lost
+ during the conversion
+
+ Example:
+ floatToString 0.000001
+ => "0.000001"
+ floatToString 0.0000001
+ => trace: warning: Imprecise conversion from float to string 0.000000
+ "0.000000"
+ */
+ floatToString = float: let
+ result = toString float;
+ precise = float == builtins.fromJSON result;
+ in if precise then result
+ else lib.warn "Imprecise conversion from float to string ${result}" result;
+
/* Check whether a value can be coerced to a string */
isCoercibleToString = x:
builtins.elem (builtins.typeOf x) [ "path" "string" "null" "int" "float" "bool" ] ||
@@ -673,14 +689,15 @@ rec {
"/prefix/nix-profiles-library-paths.patch"
"/prefix/compose-search-path.patch" ]
*/
- readPathsFromFile = rootPath: file:
- let
- lines = lib.splitString "\n" (builtins.readFile file);
- removeComments = lib.filter (line: line != "" && !(lib.hasPrefix "#" line));
- relativePaths = removeComments lines;
- absolutePaths = builtins.map (path: rootPath + "/${path}") relativePaths;
- in
- absolutePaths;
+ readPathsFromFile = lib.warn "lib.readPathsFromFile is deprecated, use a list instead"
+ (rootPath: file:
+ let
+ lines = lib.splitString "\n" (builtins.readFile file);
+ removeComments = lib.filter (line: line != "" && !(lib.hasPrefix "#" line));
+ relativePaths = removeComments lines;
+ absolutePaths = builtins.map (path: rootPath + "/${path}") relativePaths;
+ in
+ absolutePaths);
/* Read the contents of a file removing the trailing \n