* Added a new kind of multi-line string literal delimited by two
single quotes.  Example (from NixOS):
    job = ''
      start on network-interfaces
      start script
        rm -f /var/run/opengl-driver
        ${if videoDriver == "nvidia"        
          then "ln -sf ${nvidiaDrivers} /var/run/opengl-driver"
          else if cfg.driSupport
          then "ln -sf ${mesa} /var/run/opengl-driver"
          else ""
        }
        rm -f /var/log/slim.log
      end script
    '';
  This style has two big advantages:
  - \, ' and " aren't special, only '' and ${.  So you get a lot less
    escaping in shell scripts / configuration files in Nixpkgs/NixOS.
    The delimiter '' is rare in scripts (and can usually be written as
    "").  ${ is also fairly rare.
    Other delimiters such as <<...>>, {{...}} and <|...|> were also
    considered but this one appears to have the fewest drawbacks
    (thanks Martin).
  - Indentation is intelligently stripped so that multi-line strings
    can follow the nesting structure of the containing Nix
    expression.  E.g. in the example above 6 spaces are stripped from
    the start of each line.  This prevents unnecessary indentation in
    generated files (which sometimes even breaks things).
  See tests/lang/eval-okay-ind-string.nix for some examples.
			
			
This commit is contained in:
		
							parent
							
								
									633518628f
								
							
						
					
					
						commit
						6d6c68c0d2
					
				
					 6 changed files with 235 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -46,6 +46,9 @@ Int | int | Expr |
 | 
			
		|||
Str | string ATermList | Expr |
 | 
			
		||||
Str | string | Expr | ObsoleteStr
 | 
			
		||||
 | 
			
		||||
# Internal to the parser, doesn't occur in ASTs.
 | 
			
		||||
IndStr | string | Expr |
 | 
			
		||||
 | 
			
		||||
# A path is a reference to a file system object that is to be copied
 | 
			
		||||
# to the Nix store when used as a derivation attribute.  When it is
 | 
			
		||||
# concatenated to a string (i.e., `str + path'), it is also copied and
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue