aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/src
diff options
context:
space:
mode:
authoralois31 <alois1@gmx-topmail.de>2024-07-18 15:01:20 +0000
committerGerrit Code Review <gerrit@localhost>2024-07-18 15:01:20 +0000
commit7b1abf81076c93a84becc310722013e44d850002 (patch)
tree4114dc6148fd109c58d65cfd54193698f4c4abc5 /doc/manual/src
parent72db9cd67b83c44f1dfcc157edea59d238b924d9 (diff)
parentbeb231784e6bfadf59f31e56631d80d60a4b0c84 (diff)
Merge "doc/manual: clarify documentation related to the `$$` parser bug" into main
Diffstat (limited to 'doc/manual/src')
-rw-r--r--doc/manual/src/language/values.md21
1 files changed, 12 insertions, 9 deletions
diff --git a/doc/manual/src/language/values.md b/doc/manual/src/language/values.md
index f02ef2597..aa5455ae2 100644
--- a/doc/manual/src/language/values.md
+++ b/doc/manual/src/language/values.md
@@ -7,13 +7,16 @@
*Strings* can be written in three ways.
The most common way is to enclose the string between double quotes,
- e.g., `"foo bar"`. Strings can span multiple lines. The special
- characters `"` and `\` and the character sequence `${` must be
- escaped by prefixing them with a backslash (`\`). Newlines, carriage
- returns and tabs can be written as `\n`, `\r` and `\t`,
- respectively.
+ e.g., `"foo bar"`. Strings can span multiple lines. The backslash
+ (`\`) can be used to escape characters: newlines, carriage returns
+ and tabs may be written as `\n`, `\r` and `\t` respectively; any
+ other characters can be preceded by a backslash to remove any
+ special meaning they may have, like the special characters `"` and
+ `\` and the character sequence `${`.
You can include the results of other expressions into a string by enclosing them in `${ }`, a feature known as [string interpolation].
+ Due to a parser issue that has since come to be relied upon, the character sequence `$${` is interpreted literally and does not introduce an interpolation.
+ To express a `$` character immediately followed by an interpolation, the former must be escaped.
[string interpolation]: ./string-interpolation.md
@@ -43,16 +46,16 @@
Note that the whitespace and newline following the opening `''` is
ignored if there is no non-whitespace text on the initial line.
- Indented strings support [string interpolation].
-
Since `${` and `''` have special meaning in indented strings, you
need a way to quote them. `$` can be escaped by prefixing it with
`''` (that is, two single quotes), i.e., `''$`. `''` can be escaped
- by prefixing it with `'`, i.e., `'''`. `$` removes any special
- meaning from the following `$`. Linefeed, carriage-return and tab
+ by prefixing it with `'`, i.e., `'''`. Linefeed, carriage-return and tab
characters can be written as `''\n`, `''\r`, `''\t`, and `''\`
escapes any other character.
+ Indented strings support [string interpolation] using `${ }` the same way regular strings do.
+ `$${` is interpreted literally in indented strings as well, so the `$` character must be escaped if it is to be followed by an interpolation.
+
Indented strings are primarily useful in that they allow multi-line
string literals to follow the indentation of the enclosing Nix
expression, and that less escaping is typically necessary for