summary refs log tree commit diff
path: root/lib/strings.nix
Commit message (Collapse)AuthorAge
* lib: fix escapeXML example in documentationRobert Helgesson2021-11-02
| | | | | The previous example output was forgotten copy-paste from some other function.
* lib: add function escapeXMLRobert Helgesson2021-10-03
| | | | | Given a string, this function returns a string that can be inserted verbatim in an XML document.
* lib/strings: fix infinite recursion on concatStringsSep fallbackpolykernel2021-08-26
| | | | | | | | | | | | | | | 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.
* strings.nix: Fix overly monomorphic type signature commentsNiklas Hambüchen2021-07-04
| | | These functions work on lists of anything, not just lists of strings.
* lib/strings: forbid lists in isStorePathsternenseemann2021-05-07
| | | | | | | | | 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.
* lib/strings: fix example for isStorePathsternenseemann2021-05-07
| | | | | Since it checks if dirOf x is the nix store dir, a trailing slash will break this check and make it return false.
* lib: fix documented type of fixedWidthString (#121396)Lennart Spitzner2021-05-01
|
* treewide: use lib.warnIf where appropriateAlyssa Ross2021-04-28
|
* lib/string: drop redundant string in description of toInt.Alex Brandt2020-12-05
| | | | | Describing the string argument as a string is redundant and not needed to describe what this function does.
* lib/strings: fix typo in exampleAlex Brandt2020-12-04
| | | | | | The example refers to a snake_case function name but Nix uses camelCase function names. This ensures the example is correct for the given function.
* lib/strings: fix examples for enableFeatureAsAlex Brandt2020-12-03
| | | | | The As was missing in the examples on this library function. This will ensure the examples refer to the function they document.
* Merge pull request #44928 from vcunat/p/configure-assertEelco Dolstra2020-11-11
|\ | | | | lib/strings: guard against an easy mistake
| * lib/strings: guard against an easy mistakeVladimír Čunát2018-08-12
| | | | | | | | | | This would catch the bad `fwknop` flags fixed in 580cab57e4, during evaluation already.
* | lib: Use Nix's static scope checking, fix error message, optimizeRobert Hensing2020-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nix can perform static scope checking, but whenever code is inside a `with` expression, the analysis breaks down, because it can't know statically what's in the attribute set whose attributes were brought into scope. In those cases, Nix has to assume that everything works out. Except it doesnt. Removing `with` from lib/ revealed an undefined variable in an error message. If that doesn't convince you that we're better off without `with`, I can tell you that this PR results in a 3% evaluation performance improvement because Nix can look up local variables by index. This adds up with applications like the module system. Furthermore, removing `with` makes the binding site of each variable obvious, which helps with comprehension.
* | lib.splitString: use builtin.splitEtienne Laurin2020-10-18
| |
* | lib/strings: deprecate readPathsFromFileV2020-09-03
| | | | | | | | | | | | | | > NOTE: This function is not performant and should be avoided. It's not used at all in-tree now, so we can remove it completely after any remaining users are given notice.
* | lib/strings: Add floatToStringSilvan Mosberger2020-07-25
| |
* | lib/strings: Introduce escapeNixIdentifierSilvan Mosberger2020-04-13
| |
* | Merge pull request #83241 from Infinisil/valid-drv-nameSilvan Mosberger2020-04-02
|\ \ | | | | | | lib/strings: Add `sanitizeDerivationName` function
| * | lib/strings: Add sanitizeDerivationName functionSilvan Mosberger2020-03-30
| | |
* | | Revert "Revert "Merge master into staging-next""Frederik Rietdijk2020-02-05
| | | | | | | | | | | | | | | | | | | | | | | | In 87a19e9048773d5a363679617406ad148d36c3b8 I merged staging-next into master using the GitHub gui as intended. In ac241fb7a570d6cf81d229ad22a8889602639160 I merged master into staging-next for the next staging cycle, however, I accidentally pushed it to master. Thinking this may cause trouble, I reverted it in 0be87c79797a5fa384fbc356c74ed54f9f7829ea. This was however wrong, as it "removed" master. This reverts commit 0be87c79797a5fa384fbc356c74ed54f9f7829ea.
* | | Revert "Merge master into staging-next"Frederik Rietdijk2020-02-05
| | | | | | | | | | | | | | | | | | | | | | | | I merged master into staging-next but accidentally pushed it to master. This should get us back to 87a19e9048773d5a363679617406ad148d36c3b8. This reverts commit ac241fb7a570d6cf81d229ad22a8889602639160, reversing changes made to 76a439239eb310d9ad76d998b34d5d3bc0e37acb.
* | | lib/strings: fix comment typoRobert Helgesson2020-02-05
|/ /
* | lib: Add getName to mirror getVersionJohn Ericson2019-11-24
| |
* | Doc fix: use correct function name in type signature for concatIMapStringsSepNathan van Doorn2019-03-18
| |
* | lib.makePerlPath -> perlPackages.makePerlPathvolth2018-12-15
| |
* | make-derivation: use pname-version as default name if both are presentPatrick Hilhorst2018-11-06
| |
* | Merge pull request #49383 from tazjin/docs/lib-docstringsGraham Christensen2018-10-29
|\ \ | | | | | | Update library function "docstrings" for nixdoc generation
| * | lib/strings: Update documentation comments for doc generationVincent Ambo2018-10-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updates documentation comments with extra information for nixdoc[1] compatibility. Some documentation strings have additionally been reworded for clarity. "Faux types" are added where applicable, but some functions do things that are not trivially representable in the type notation used so they were ignored for this purpose. [1]: https://github.com/tazjin/nixdoc
* | | lib.isStorePath: fix `false` result when passed a path objectTim Cuthbertson2018-10-20
|/ / | | | | | | | | Since `isStorePath` relies on comparing against builtins.storeDir (a string), we need to convert the input into a string as well.
* | lib/trivial: add a few examples of usage of assertMsg/assertOneOfProfpatsch2018-09-06
| |
* | Merge branch 'no-toPath'Shea Levy2018-09-06
|\ \
| * | treewide: Remove uses of builtins.toPath.Shea Levy2018-05-22
| | | | | | | | | | | | | | | | | | | | | | | | toPath has confusing semantics and is never necessary; it can always either just be omitted or replaced by pre-concatenating `/.`. It has been marked as "!!! obsolete?" for more than 10 years in a C++ comment, hopefully removing it will let us properly deprecate and, eventually, remove it.
* | | function rewritten by @InfinisilAaron Andersen2018-08-21
| | |
* | | as requested:Aaron Andersen2018-08-21
| |/ |/| | | | | | | | | | | - moved function into strings.nix - renamed function from makePerl5Lib - removed duplicates entries in the resulting value - rewrote the function from scratch after learning a few things (much cleaner now)
* | treewide: fix build with disallowed aliases (#43872)volth2018-07-21
|/ | | fixes build with disallowed aliases
* lib: Add more configure flag helpersJohn Ericson2018-05-11
| | | | | Add with/without to match enable/disable, and add `--{enable,with}-key=value` versions of both.
* lib.makeSearchPath: allow null in search pathMatthew Bauer2018-05-09
| | | | | This makes things match ‘buildInputs’ where inputs are allowed to be null.
* lib.isStorePath: Fix derivation detectionShea Levy2018-03-09
|
* nixpkgs.lib: Add escapeNixStringRyan Trinkle2017-12-02
|
* Convert libs to a fixed-pointGraham Christensen2017-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This does break the API of being able to import any lib file and get its libs, however I'm not sure people did this. I made this while exploring being able to swap out docFn with a stub in #2305, to avoid functor performance problems. I don't know if that is going to move forward (or if it is a problem or not,) but after doing all this work figured I'd put it up anyway :) Two notable advantages to this approach: 1. when a lib inherits another lib's functions, it doesn't automatically get put in to the scope of lib 2. when a lib implements a new obscure functions, it doesn't automatically get put in to the scope of lib Using the test script (later in this commit) I got the following diff on the API: + diff master fixed-lib 11764a11765,11766 > .types.defaultFunctor > .types.defaultTypeMerge 11774a11777,11778 > .types.isOptionType > .types.isType 11781a11786 > .types.mkOptionType 11788a11794 > .types.setType 11795a11802 > .types.types This means that this commit _adds_ to the API, however I can't find a way to fix these last remaining discrepancies. At least none are _removed_. Test script (run with nix-repl in the PATH): #!/bin/sh set -eux repl() { suff=${1:-} echo "(import ./lib)$suff" \ | nix-repl 2>&1 } attrs_to_check() { repl "${1:-}" \ | tr ';' $'\n' \ | grep "\.\.\." \ | cut -d' ' -f2 \ | sed -e "s/^/${1:-}./" \ | sort } summ() { repl "${1:-}" \ | tr ' ' $'\n' \ | sort \ | uniq } deep_summ() { suff="${1:-}" depth="${2:-4}" depth=$((depth - 1)) summ "$suff" for attr in $(attrs_to_check "$suff" | grep -v "types.types"); do if [ $depth -eq 0 ]; then summ "$attr" | sed -e "s/^/$attr./" else deep_summ "$attr" "$depth" | sed -e "s/^/$attr./" fi done } ( cd nixpkgs #git add . #git commit -m "Auto-commit, sorry" || true git checkout fixed-lib deep_summ > ../fixed-lib git checkout master deep_summ > ../master ) if diff master fixed-lib; then echo "SHALLOW MATCH!" fi ( cd nixpkgs git checkout fixed-lib repl .types )
* lib: introduce imap0, imap1 (#25543)zimbatm2017-07-04
| | | | | | | | | | | | | | | | * lib: introduce imap0, imap1 For historical reasons, imap starts counting at 1 and it's not consistent with the rest of the lib. So for now we split imap into imap0 that starts counting at zero and imap1 that starts counting at 1. And imap is marked as deprecated. See https://github.com/NixOS/nixpkgs/commit/c71e2d42359f9900ea2c290d141c0d606471da16#commitcomment-21873221 * replace uses of lib.imap * lib: move imap to deprecated.nix
* lib/string: make `isStorePath` total (#26216)Profpatsch2017-05-30
| | | fix #9278
* lib: trivial spelling fixesTom Saeger2017-04-19
|
* lib.readPathsFromFile: simplify, /cc #24036Orivej Desh2017-03-19
| | | | This part isn't needed after 36de745e1b7.
* readPathsFromFile: fixup after #23851Vladimír Čunát2017-03-19
| | | | | The final newline would produce an empty string; let's filter all empty lines as well.
* libs: make splitString also split last separator (#23851)Léo Gaspard2017-03-15
| | | | | | * libs: make splitString also split last separator * libs: add tests for splitStrings
* getVersion: first try drv.version before parsing drv.nameDomen Kožar2016-08-13
|
* fix documentation typo in lib/strings.nix (#17684)Данило Глинський (Danylo Hlynskyi)2016-08-12
|
* hasSuffix: human readable inputsDomen Kožar2016-08-10
|