mirror of
https://github.com/NixOS/nix
synced 2025-06-25 06:31:14 +02:00
* String interpolation. Expressions like
"--with-freetype2-library=" + freetype + "/lib" can now be written as "--with-freetype2-library=${freetype}/lib" An arbitrary expression can be enclosed within ${...}, not just identifiers. * Escaping in string literals: \n, \r, \t interpreted as in C, any other character following \ is interpreted as-is. * Newlines are now allowed in string literals.
This commit is contained in:
parent
6cecad2be0
commit
0064599a27
7 changed files with 88 additions and 15 deletions
|
@ -231,7 +231,7 @@ static ATerm concatStrings(EvalState & state, const ATermVector & args)
|
|||
{
|
||||
ATermList context = ATempty;
|
||||
ostringstream s;
|
||||
bool isPath;
|
||||
bool isPath = false;
|
||||
|
||||
for (ATermVector::const_iterator i = args.begin(); i != args.end(); ++i) {
|
||||
bool isPath2;
|
||||
|
@ -449,6 +449,14 @@ Expr evalExpr2(EvalState & state, Expr e)
|
|||
return makeList(ATconcat(l1, l2));
|
||||
}
|
||||
|
||||
/* String concatenation. */
|
||||
ATermList es;
|
||||
if (matchConcatStrings(e, es)) {
|
||||
ATermVector args;
|
||||
for (ATermIterator i(es); i; ++i) args.push_back(*i);
|
||||
return concatStrings(state, args);
|
||||
}
|
||||
|
||||
/* Barf. */
|
||||
throw badTerm("invalid expression", e);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue