]> gitweb.factorcode.org Git - factor.git/commitdiff
interpolate: adding generalized numbered string interpolate.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 24 Jul 2013 15:44:31 +0000 (08:44 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 24 Jul 2013 15:44:31 +0000 (08:44 -0700)
basis/interpolate/interpolate-docs.factor [new file with mode: 0644]
basis/interpolate/interpolate.factor

diff --git a/basis/interpolate/interpolate-docs.factor b/basis/interpolate/interpolate-docs.factor
new file mode 100644 (file)
index 0000000..02300ea
--- /dev/null
@@ -0,0 +1,10 @@
+USING: help.markup help.syntax math strings ;
+IN: interpolate
+
+HELP: ninterpolate
+{ $values { "str" string } { "n" integer } }
+{ $description "Assigns stack arguments to numbered variables for string interpolation." }
+{ $examples
+    { $example "USING: interpolate ;" "\"Bob\" \"Alice\" \"Hi ${0}, it's ${1}.\" 2 ninterpolate" "Hi Bob, it's Alice." }
+}
+{ $see-also interpolate } ;
index 6e5f68fcdfba9c494244ff507b5451aaaa0a6e30..bed5b7416c9e79586d327a3c48977505641267c8 100644 (file)
@@ -1,7 +1,8 @@
 ! Copyright (C) 2008, 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: io kernel macros make multiline namespaces vocabs.parser
-present sequences strings splitting fry accessors ;
+USING: accessors arrays fry hashtables io kernel macros make
+math.parser multiline namespaces present sequences
+sequences.generalizations splitting strings vocabs.parser ;
 IN: interpolate
 
 <PRIVATE
@@ -41,3 +42,9 @@ MACRO: interpolate ( string -- )
 SYNTAX: I[
     "]I" parse-multiline-string
     interpolate-locals append! ;
+
+MACRO: ninterpolate ( str n -- quot )
+    swap '[
+        _ narray [ number>string swap 2array ] map-index
+        >hashtable [ _ interpolate ] with-variables
+    ] ;