Silvan Mosberger
4f35a58184
Merge pull request #221204 from tweag/deprecate-paths-to-strings
...
lib.strings: Prevent paths as inputs in some functions
2023-04-04 18:35:06 +02:00
Silvan Mosberger
61012f6daf
lib.strings.remove{Prefix,Suffix}: Deprecate for path prefix/suffix arguments
...
See also parent commits
2023-03-15 19:51:38 +01:00
Silvan Mosberger
5e8b9de728
lib.strings.normalizePath: Deprecate for path values
...
There's no need to call this function on path data types, and it's
confusing with the new lib.path library functions
2023-03-15 19:42:45 +01:00
Silvan Mosberger
99bc90e301
lib.strings: Deprecate path prefix/suffix/infix arguments
...
lib.{hasPrefix,hasInfix,hasSuffix} would otherwise return an
always-false result, which can be very unexpected:
nix-repl> lib.strings.hasPrefix ./lib ./lib/meta.nix
false
2023-03-15 19:42:43 +01:00
Naïm Favier
a342ebe166
lib/strings: hide asciiTable
...
Since it's an attribute set, the lib function location generating code
tries to generate locations for each of the characters...
2023-03-04 13:20:49 +01:00
Patrick Widmer
7089294f10
strings: add escapeQuery for url encoding
2023-03-03 20:48:55 +01:00
Silvan Mosberger
50e4dbf35b
Merge pull request #205557 from ncfavier/concatLines
...
lib/strings: add `concatLines`
2023-01-31 18:05:53 +01:00
Robert Hensing
d103811173
lib.isStringLike: Remove use of list
...
In the current implementation of Nix, this list would be allocated
over and over. Iirc pennae tried to optimize static list allocation,
but gained no significant performance improvement.
2022-12-31 01:33:47 +01:00
Robert Hensing
23c25d5231
lib.strings.isConvertibleWithToString: Refactor to reuse isStringLike
2022-12-31 01:33:47 +01:00
Robert Hensing
834f0d660a
lib.strings: isMoreCoercibleString -> isConvertibleWithToString
...
Yes, this function name is inconveniently long, but it is important
for the name to explicitly reference the function and not be mistaken
for the implicit string conversions, which only happen for a smaller
set of values.
2022-12-31 01:33:47 +01:00
Robert Hensing
872a24ebbc
lib.strings: isSimpleCoercibleString -> isStringLike
2022-12-31 01:33:46 +01:00
Robert Hensing
fed5dc66f8
treewide: isCoercibleToString -> isMoreCoercibleToString
...
No change in behavior.
2022-12-31 01:03:24 +01:00
Robert Hensing
68b6443ed6
lib.strings: Rename isCoercibleToString -> isMoreCoercibleToString
2022-12-31 01:03:24 +01:00
Robert Hensing
03063f65a5
lib.strings.toShellVar: Use isSimpleCoercibleString
...
Expecting no change in behavior.
2022-12-31 01:03:24 +01:00
Robert Hensing
2b4a8db032
lib.strings.isStorePath: Use isSimpleCoercibleToString
...
Expecting no change in behavior.
2022-12-31 01:03:24 +01:00
Robert Hensing
67cfc7a8f6
lib.strings: Add isSimpleCoercibleToString
2022-12-31 01:03:23 +01:00
Naïm Favier
8b5deda7d8
lib/strings: replace poop emoji ( #206999 )
2022-12-20 13:48:09 +01:00
figsoda
695d4bc76b
lib: fix typos
2022-12-17 18:59:29 -05:00
Artturin
05a2dfd674
lib.replaceChars: warn about being a deprecated alias
...
replaceStrings has been in nix since 2015(nix 1.10)
so it is safe to remove the fallback
d6d5885c15
2022-12-15 22:25:51 +02:00
Robert Hensing
efa1140e83
Merge pull request #205457 from h7x4/lib-strings-toInt-broken-for-negative-numbers
...
lib.strings: fix negative number handling for `toInt` and `toIntBase10`
2022-12-11 02:26:42 +01:00
Naïm Favier
ed0b8c26f1
lib/strings: add concatLines
...
Like `unlines` from Haskell.
The aim is to replace the `concatStringsSep "\n"` pattern for generated
files, which doesn't add a final newline.
2022-12-10 15:56:30 +01:00
h7x4
62e863e98c
lib.strings: fix negative number handling for toInt
and toIntBase10
...
The previous version would be unstable due to an input validation regex
not expecting a '-' in front of the number.
2022-12-10 13:16:45 +01:00
Naïm Favier
22af649d14
Merge pull request #204087 from ncfavier/splitString-simplify
2022-12-08 13:30:50 +01:00
AndersonTorres
762f0a599e
lib/strings.nix: add mesonOption utility function
...
And some friends, to help write Meson commandline invocations.
2022-12-06 23:09:36 -03:00
Naïm Favier
3c2124c471
lib/strings: simplify splitString
...
There's no need to use `unsafeDiscardStringContext` since
ee7fe64c0a
(Nix 1.8).
Also the separator can't have a context since `builtins.split` would fail, so
we can assume it doesn't.
2022-12-02 12:04:36 +01:00
Robert Hensing
bc4ce318bf
Merge pull request #173949 from jacoblambda/fix-toInt-zero-padding
...
lib: add strings.toIntBase10 to parse zero-padded strings
2022-10-24 13:22:42 +02:00
Guillaume Girol
956e35d0b1
lib.normalizePath: the empty string is not a valid regex on darwin
...
presumably due to using libc++'s regex lib instead of libstdc++ on linux
Fixes https://github.com/NixOS/nixpkgs/pull/177273#issuecomment-1287562800
2022-10-24 12:25:34 +10:00
Jacob Abel
ed71173841
lib/strings: Update docs and restructured code to improve readability of toInt and toIntBase10.
2022-10-23 17:50:24 -04:00
Jacob Abel
88b18dcf44
lib/strings: Improve error message for octal ambiguity in toInt
2022-10-23 17:50:24 -04:00
Jacob Abel
39a4ab78a1
lib/strings: Refactor toInt into toInt and toIntBase10
2022-10-23 17:50:24 -04:00
Jacob Abel
3d196a5f2a
lib/strings: Update toInt to handle intermixed ws and zeros. Added tests
2022-10-23 17:50:23 -04:00
Jacob Abel
febff1dccd
lib/strings: allow toInt to parse zero-padded strings
2022-10-23 17:50:20 -04:00
ajs124
4284ac9dfb
lib.strings: Add normalizePath
...
dedupes extranous /'s in filepaths
Co-authored-by: Daniel Olsen <daniel.olsen99@gmail.com>
2022-10-20 20:12:15 +02:00
Daniel Olsen
4c420ee485
lib.strings: Add function to do C-style escaping
2022-10-20 20:12:15 +02:00
Daniel Olsen
a08741ffbd
lib.strings: Add function to convert character to number
2022-10-20 18:58:44 +02:00
Naïm Favier
4d2ea62d82
lib/strings/toShellVars: handle derivations as strings
2022-05-07 17:01:51 +02:00
Daniel Thwaites
e888c2133f
lib/strings: convert to string within hasInfix
...
This should fix the issue mentioned here:
https://github.com/NixOS/nixpkgs/pull/168175#issuecomment-1107830574
2022-05-01 17:39:42 +01:00
Naïm Camille Favier
535997fa52
lib/strings: fix quoting of example
...
Co-authored-by: Silvan Mosberger <github@infinisil.com>
2022-04-27 19:42:40 +02:00
Naïm Favier
226bc99659
lib/strings: add toShellVars
...
A straightforward piece of plumbing to safely inject Nix variables into
shell scripts:
''
${lib.toShellVars { inherit foo bar; }}
cmd "$foo" --bar "$bar"
''
2022-04-27 16:04:17 +02:00
Daniel Thwaites
4f9b8a0702
lib/strings: optimise hasInfix function ( #168175 )
...
* lib/strings: optimise hasInfix function
* lib/strings: optimise hasInfix further using regex
* rstudio: call hasInfix with a string
* lib/strings: remove let from hasInfix
Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2022-04-22 12:43:25 -04:00
Robert Hensing
559ac3c9e7
Merge pull request #166383 from hercules-ci/always-sanitize-derivation-name
...
Always sanitize derivation name
2022-04-05 20:05:33 +02:00
Robert Hensing
fffabe7500
lib.sanitizeDerivationName: Simplify regex
...
`^` and `$` are implicit in `match`.
2022-04-05 19:14:09 +02:00
Silvan Mosberger
975a1ae339
lib/strings: Add levenshtein distance functions
...
Adds some functions related to string similarity:
- lib.strings.commonPrefixLength
- lib.strings.commonSuffixLength
- lib.strings.levenshtein
- lib.strings.levenshteinAtMost
2022-04-01 22:03:05 +02:00
Robert Hensing
342a3c32c9
lib.sanitizeDerivationName: Optimize the common case
2022-03-31 18:31:11 +02:00
Robert Helgesson
c7678aff1b
lib: fix escapeXML example in documentation
...
The previous example output was forgotten copy-paste from some other
function.
2021-11-02 22:43:25 +01:00
Robert Helgesson
e75f346aa3
lib: add function escapeXML
...
Given a string, this function returns a string that can be inserted
verbatim in an XML document.
2021-10-03 11:28:03 +02:00
polykernel
de81edf6ef
lib/strings: fix infinite recursion on concatStringsSep fallback
...
The current implementation of the concatStringsSep fallback references
concatStrings whcih is just a partial application of concatStringsSep,
forming a circular dependency. Although this will almost never be
encountered as (assuming the user does not explicitly trigger it):
1. the or operator will short circuit both in lazy and strict
evaluation
2. this can only occur in Nix versions prior to 1.10
which is not compatible with various nix operations as of 2.3.15
However it is still important if scopedImport is used or the builtins
have been overwritten. lib.foldl' is used instead of builtins.foldl'
as the foldl' primops was introduced in the same release as concatStringsSep.
2021-08-26 20:08:05 -04:00
Niklas Hambüchen
5db6b909cd
strings.nix: Fix overly monomorphic type signature comments
...
These functions work on lists of anything, not just lists of strings.
2021-07-04 20:52:48 +02:00
sternenseemann
f39a5c4e50
lib/strings: forbid lists in isStorePath
...
When a list is passed to isStorePath this is most likely a mistake and
it is therefore better to just return false. There is one case where
this theoretically makes sense (if a list contains a single element for
which isStorePath elem), but since that case is also probably seldomly
intentional, it may save someone from debbuging unclear evaluation
errors.
2021-05-07 01:22:30 +02:00
sternenseemann
326d0970e0
lib/strings: fix example for isStorePath
...
Since it checks if dirOf x is the nix store dir, a trailing slash will
break this check and make it return false.
2021-05-07 01:22:30 +02:00