interpolate: make interpolate and interpolate-locals symmetric.
							parent
							
								
									7aa0e16df8
								
							
						
					
					
						commit
						a63492e9c0
					
				| 
						 | 
					@ -123,7 +123,7 @@ FUNCTOR-SYNTAX: inline [ last-word make-inline ] append! ;
 | 
				
			||||||
FUNCTOR-SYNTAX: call-next-method T{ fake-call-next-method } suffix! ;
 | 
					FUNCTOR-SYNTAX: call-next-method T{ fake-call-next-method } suffix! ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: (INTERPOLATE) ( accum quot -- accum )
 | 
					: (INTERPOLATE) ( accum quot -- accum )
 | 
				
			||||||
    [ scan-token interpolate-locals ] dip
 | 
					    [ scan-token interpolate-locals-quot ] dip
 | 
				
			||||||
    '[ _ with-string-writer @ ] suffix! ;
 | 
					    '[ _ with-string-writer @ ] suffix! ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PRIVATE>
 | 
					PRIVATE>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ TUPLE: anon-var ;
 | 
				
			||||||
        dup stack-var? [ n>> [ or ] keep max ] [ drop ] if
 | 
					        dup stack-var? [ n>> [ or ] keep max ] [ drop ] if
 | 
				
			||||||
    ] reduce ;
 | 
					    ] reduce ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:: interpolate-quot ( str quot -- quot' )
 | 
					:: (interpolate-quot) ( str quot -- quot' )
 | 
				
			||||||
    str parse-interpolate :> args
 | 
					    str parse-interpolate :> args
 | 
				
			||||||
    args max-stack-var    :> vars
 | 
					    args max-stack-var    :> vars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,15 +67,24 @@ TUPLE: anon-var ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PRIVATE>
 | 
					PRIVATE>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					: interpolate-quot ( str -- quot )
 | 
				
			||||||
 | 
					    [ [ get ] ] (interpolate-quot) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MACRO: interpolate ( str -- quot )
 | 
					MACRO: interpolate ( str -- quot )
 | 
				
			||||||
    [ [ get ] ] interpolate-quot ;
 | 
					    interpolate-quot ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: interpolate>string ( str -- newstr )
 | 
					: interpolate>string ( str -- newstr )
 | 
				
			||||||
    [ interpolate ] with-string-writer ; inline
 | 
					    [ interpolate ] with-string-writer ; inline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: interpolate-locals ( str -- quot )
 | 
					: interpolate-locals-quot ( str -- quot )
 | 
				
			||||||
    [ dup search [ [ ] ] [ [ get ] ] ?if ] interpolate-quot ;
 | 
					    [ dup search [ [ ] ] [ [ get ] ] ?if ] (interpolate-quot) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MACRO: interpolate-locals ( str -- quot )
 | 
				
			||||||
 | 
					    interpolate-locals-quot ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					: interpolate-locals>string ( str -- newstr )
 | 
				
			||||||
 | 
					    [ interpolate-locals ] with-string-writer ; inline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SYNTAX: [I
 | 
					SYNTAX: [I
 | 
				
			||||||
    "I]" parse-multiline-string
 | 
					    "I]" parse-multiline-string
 | 
				
			||||||
    interpolate-locals append! ;
 | 
					    interpolate-locals-quot append! ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue