]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/roles/roles.factor
factor: trim using lists
[factor.git] / extra / roles / roles.factor
index d54b4339a703a523641ab2ac8fc8531ada525b55..5a6e9d53467885340cc69f139741684a288b3ac5 100644 (file)
@@ -1,8 +1,8 @@
-! (c)2009 Joe Groff bsd license
-USING: accessors arrays classes classes.mixin classes.parser
-classes.tuple classes.tuple.parser combinators
-combinators.short-circuit kernel lexer make parser sequences
-sets strings words ;
+! Copyright (C) 2009 Joe Groff.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors arrays classes.mixin classes.parser
+classes.tuple classes.tuple.parser combinators kernel lexer make
+parser sequences sets strings words ;
 IN: roles
 
 ERROR: role-slot-overlap class slots ;
@@ -12,7 +12,7 @@ PREDICATE: role < mixin-class
     "role-slots" word-prop >boolean ;
 
 : parse-role-definition ( -- class superroles slots )
-    CREATE-CLASS scan {
+    scan-new-class scan-token {
         { ";" [ { } { } ] }
         { "<" [ scan-word 1array [ parse-tuple-slots ] { } make ] }
         { "<{" [ \ } parse-until >array [ parse-tuple-slots ] { } make ] }
@@ -20,7 +20,8 @@ PREDICATE: role < mixin-class
     } case ;
 
 : slot-name ( name/array -- name )
-    dup string? [ ] [ first ] if ;
+    dup string? [ first ] unless ;
+
 : slot-names ( array -- names )
     [ slot-name ] map ;
 
@@ -64,6 +65,4 @@ PREDICATE: role < mixin-class
     [ drop [ role? ] filter add-to-roles ] 3tri ;
 
 SYNTAX: ROLE: parse-role-definition define-role ;
-SYNTAX: TUPLE: parse-role-definition define-tuple-class-with-roles ;
-
-
+SYNTAX: ROLE-TUPLE: parse-role-definition define-tuple-class-with-roles ;