]> gitweb.factorcode.org Git - factor.git/commitdiff
bare: addinng support for maps
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 15 Jun 2022 18:16:27 +0000 (11:16 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 15 Jun 2022 18:16:27 +0000 (11:16 -0700)
extra/bare/bare.factor

index e18d6cf1b1bbf2e186d2e8108bb061077d78ff0d..75dbf9565172fd84c21694b738d6d3b90e15923f 100644 (file)
@@ -69,6 +69,11 @@ M: list write-bare
     [ length>> [ dup length uint write-bare ] unless ]
     [ type>> '[ _ write-bare ] each ] bi ;
 
+M: map write-bare
+    over assoc-size uint write-bare
+    [ from>> ] [ to>> ] bi [ write-bare ] bi-curry@
+    '[ _ _ bi* ] assoc-each ;
+
 GENERIC: read-bare ( schema -- obj )
 
 M: uint read-bare
@@ -117,6 +122,11 @@ M: list read-bare
     [ length>> [ uint read-bare ] unless* ]
     [ type>> '[ _ read-bare ] replicate ] bi ;
 
+M: map read-bare
+    [ uint read-bare ] dip
+    [ from>> ] [ to>> ] bi [ read-bare ] bi-curry@
+    '[ @ @ 2array ] replicate ;
+
 M: union read-bare
     [ uint read-bare ] dip members>> value-at read-bare ;