From f9eb3d158a47dccb1e4762f3ed91f224fc96dc7e Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Sat, 14 Mar 2020 17:53:47 +0100 Subject: [PATCH] lib/strings: Introduce escapeNixIdentifier --- lib/strings.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/strings.nix b/lib/strings.nix index 7ecd6b143ee..74e3eaa0722 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -315,6 +315,21 @@ rec { */ escapeNixString = s: escape ["$"] (builtins.toJSON s); + /* Quotes a string if it can't be used as an identifier directly. + + Type: string -> string + + Example: + escapeNixIdentifier "hello" + => "hello" + escapeNixIdentifier "0abc" + => "\"0abc\"" + */ + escapeNixIdentifier = s: + # Regex from https://github.com/NixOS/nix/blob/d048577909e383439c2549e849c5c2f2016c997e/src/libexpr/lexer.l#L91 + if builtins.match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null + then s else escapeNixString s; + # Obsolete - use replaceStrings instead. replaceChars = builtins.replaceStrings or ( del: new: s: