1
0
Fork 0
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:
Eelco Dolstra 2006-05-01 14:01:47 +00:00
parent 6cecad2be0
commit 0064599a27
7 changed files with 88 additions and 15 deletions

View file

@ -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);
}