* 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