]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/slots/syntax/syntax.factor
Add copy-slots{ word to slots.syntax. Alias slots{ to get{ and set-slots{ to set...
[factor.git] / extra / slots / syntax / syntax.factor
index ef572910d821e3e2165c548467d95c5230535d36..cda8d402e6fe66fdb6d5505532de4294267fb32d 100755 (executable)
@@ -12,14 +12,29 @@ SYNTAX: slots{
     "}" [ reader-word 1quotation ] map-tokens
     '[ [ _ cleave ] output>array ] append! ;
 
-: writer-word* ( name -- word )
+: >>writer-word ( name -- word )
+    ">>" prepend "accessors" lookup ;
+    
+: writer-word<< ( name -- word )
     ">>" prepend "accessors" lookup ;
 
 SYNTAX: set-slots[
-    "]" [ writer-word* 1quotation ] map-tokens
+    "]" [ >>writer-word 1quotation ] map-tokens
     '[ _ spread ] append! ;
 
 SYNTAX: set-slots{
-    "}" [ writer-word* 1quotation ] map-tokens
+    "}" [ >>writer-word 1quotation ] map-tokens
     [ length ] [ ] bi
     '[ _ firstn _ spread ] append! ;
+
+SYNTAX: copy-slots{
+    "}" [
+        [ reader-word 1quotation ]
+        [ writer-word<< 1quotation ] bi append
+    ] map-tokens
+    '[ swap _ cleave ] append! ;
+    
+SYNTAX: get[ POSTPONE: slots[ ;
+SYNTAX: get{ POSTPONE: slots{ ;
+SYNTAX: set[ POSTPONE: set-slots[ ;
+SYNTAX: set{ POSTPONE: set-slots{ ;