]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/urls/encoding/encoding.factor
Merge branch 'master' into experimental
[factor.git] / basis / urls / encoding / encoding.factor
index f9dc64485d20c4574986c1d9c4c383fb6aedbc13..a5f5d62bfc885984865546e49157788f12cf6165 100644 (file)
@@ -96,6 +96,15 @@ PRIVATE>
         ] when*
     ] 2keep set-at ;
 
+: assoc-strings ( assoc -- assoc' )
+    [
+        {
+            { [ dup not ] [ ] }
+            { [ dup array? ] [ [ present ] map ] }
+            [ present 1array ]
+        } cond
+    ] assoc-map ;
+
 PRIVATE>
 
 : query>assoc ( query -- assoc )
@@ -110,11 +119,8 @@ PRIVATE>
 
 : assoc>query ( assoc -- str )
     [
-        dup array? [ [ present ] map ] [ present 1array ] if
-    ] assoc-map
-    [
-        [
+        assoc-strings [
             [ url-encode ] dip
-            [ url-encode "=" glue , ] with each
+            [ [ url-encode "=" glue , ] with each ] [ , ] if*
         ] assoc-each
     ] { } make "&" join ;