]> gitweb.factorcode.org Git - factor.git/commitdiff
Clean up some duplication in interpolate
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 26 Jan 2009 05:04:19 +0000 (23:04 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 26 Jan 2009 05:04:19 +0000 (23:04 -0600)
basis/interpolate/interpolate.factor

index 5e4805a8ac4ed825da2a9f5b6dc620d531cc2c87..778f94ab6f19b9a3612e487992a7db16f72a6e0c 100644 (file)
@@ -1,9 +1,11 @@
-! Copyright (C) 2008 Slava Pestov.
+! Copyright (C) 2008, 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: io kernel macros make multiline namespaces parser
 present sequences strings splitting fry accessors ;
 IN: interpolate
 
+<PRIVATE
+
 TUPLE: interpolate-var name ;
 
 : (parse-interpolate) ( string -- )
@@ -20,21 +22,22 @@ TUPLE: interpolate-var name ;
 : parse-interpolate ( string -- seq )
     [ (parse-interpolate) ] { } make ;
 
-MACRO: interpolate ( string -- )
-    parse-interpolate [
+: (interpolate) ( string quot -- quot' )
+    [ parse-interpolate ] dip '[
         dup interpolate-var?
-        [ name>> '[ _ get present write ] ]
+        [ name>> @ '[ _ @ present write ] ]
         [ '[ _ write ] ]
         if
-    ] map [ ] join ;
+    ] map [ ] join ; inline
 
 : interpolate-locals ( string -- quot )
-    parse-interpolate [
-        dup interpolate-var?
-        [ name>> search '[ _ present write ] ]
-        [ '[ _ write ] ]
-        if
-    ] map [ ] join ;
+    [ search [ ] ] (interpolate) ;
+
+PRIVATE>
+
+MACRO: interpolate ( string -- )
+    [ [ get ] ] (interpolate) ;
 
-: I[ "]I" parse-multiline-string
-    interpolate-locals parsed \ call parsed ; parsing
+: I[
+    "]I" parse-multiline-string
+    interpolate-locals over push-all ; parsing