3
0
Fork 0
forked from mirrors/nixpkgs

lib.strings: isSimpleCoercibleString -> isStringLike

This commit is contained in:
Robert Hensing 2022-12-31 00:38:16 +01:00
parent 5b8de3d9d8
commit 872a24ebbc
2 changed files with 10 additions and 10 deletions

View file

@ -395,7 +395,7 @@ rec {
*/
toShellVar = name: value:
lib.throwIfNot (isValidPosixName name) "toShellVar: ${name} is not a valid shell variable name" (
if isAttrs value && ! isSimpleCoercibleToString value then
if isAttrs value && ! isStringLike value then
"declare -A ${name}=(${
concatStringsSep " " (lib.mapAttrsToList (n: v:
"[${escapeShellArg n}]=${escapeShellArg v}"
@ -800,7 +800,7 @@ rec {
/* Soft-deprecated name for isMoreCoercibleToString */
isCoercibleToString = lib.warnIf (lib.isInOldestRelease 2305)
"lib.strings.isCoercibleToString is deprecated in favor of either isSimpleCoercibleToString or isMoreCoercibleString. Only use the latter if it needs to return true for null, numbers, booleans and list of similarly coercibles."
"lib.strings.isCoercibleToString is deprecated in favor of either isStringLike or isMoreCoercibleString. Only use the latter if it needs to return true for null, numbers, booleans and list of similarly coercibles."
isMoreCoercibleToString;
/* Check whether a list or other value can be passed to toString.
@ -814,13 +814,13 @@ rec {
x ? outPath ||
x ? __toString;
/* Check whether a value can be coerced to a string,
/* Check whether a value can be coerced to a string.
The value must be a string, path, or attribute set.
This follows Nix's internal coerceToString(coerceMore = false) logic,
except for external types, for which we return false.
String-like values can be used without explicit conversion in
string interpolations and in most functions that expect a string.
*/
isSimpleCoercibleToString = x:
isStringLike = x:
elem (typeOf x) [ "path" "string" ] ||
x ? outPath ||
x ? __toString;
@ -838,7 +838,7 @@ rec {
=> false
*/
isStorePath = x:
if isSimpleCoercibleToString x then
if isStringLike x then
let str = toString x; in
substring 0 1 str == "/"
&& dirOf str == storeDir

View file

@ -54,7 +54,7 @@ let
concatStringsSep
escapeNixString
hasInfix
isSimpleCoercibleToString
isStringLike
;
inherit (lib.trivial)
boolToString
@ -227,7 +227,7 @@ rec {
merge = loc: defs:
let
getType = value:
if isAttrs value && isSimpleCoercibleToString value
if isAttrs value && isStringLike value
then "stringCoercibleSet"
else builtins.typeOf value;
@ -479,7 +479,7 @@ rec {
path = mkOptionType {
name = "path";
descriptionClass = "noun";
check = x: isSimpleCoercibleToString x && builtins.substring 0 1 (toString x) == "/";
check = x: isStringLike x && builtins.substring 0 1 (toString x) == "/";
merge = mergeEqualOption;
};