]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/smalltalk/library/library.factor
factor: trim using lists
[factor.git] / extra / smalltalk / library / library.factor
index bf455c2c4af234150a157ca2bc6c74442649c303..6958b915d644477e468b64f4f1e744092a7c1534 100644 (file)
@@ -1,17 +1,25 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel present io math sequences assocs math.ranges
-locals smalltalk.selectors smalltalk.ast ;
+USING: kernel present io math sequences assocs ranges
+math.order tools.time smalltalk.selectors smalltalk.ast ;
 IN: smalltalk.library
 
-! Some unary selectors
 SELECTOR: print
 SELECTOR: asString
 
 M: object selector-print dup present print ;
 M: object selector-asString present ;
 
-! Some binary selectors
+SELECTOR: print:
+SELECTOR: nextPutAll:
+SELECTOR: tab
+SELECTOR: nl
+
+M: object selector-print: [ present ] dip stream-print nil ;
+M: object selector-nextPutAll: selector-print: ;
+M: object selector-tab "    " swap selector-print: ;
+M: object selector-nl stream-nl nil ;
+
 SELECTOR: +
 SELECTOR: -
 SELECTOR: *
@@ -32,7 +40,12 @@ M: object selector-<= swap <= ;
 M: object selector->= swap >= ;
 M: object selector-=  swap =  ;
 
-! Some keyword selectors
+SELECTOR: min:
+SELECTOR: max:
+
+M: object selector-min: min ;
+M: object selector-max: max ;
+
 SELECTOR: ifTrue:
 SELECTOR: ifFalse:
 SELECTOR: ifTrue:ifFalse:
@@ -41,6 +54,10 @@ M: object selector-ifTrue: [ call( -- result ) ] [ drop nil ] if ;
 M: object selector-ifFalse: [ drop nil ] [ call( -- result ) ] if ;
 M: object selector-ifTrue:ifFalse: [ drop call( -- result ) ] [ nip call( -- result ) ] if ;
 
+SELECTOR: isNil
+
+M: object selector-isNil nil eq? ;
+
 SELECTOR: at:
 SELECTOR: at:put:
 
@@ -58,9 +75,9 @@ M:: object selector-do: ( quot receiver -- nil )
 SELECTOR: to:
 SELECTOR: to:do:
 
-M: object selector-to: swap [a,b] ;
+M: object selector-to: swap [a..b] ;
 M:: object selector-to:do: ( to quot from -- nil )
-    from to [a,b] [ quot call( i -- result ) drop ] each nil ;
+    from to [a..b] [ quot call( i -- result ) drop ] each nil ;
 
 SELECTOR: value
 SELECTOR: value:
@@ -73,3 +90,11 @@ M: object selector-value: call( input -- result ) ;
 M: object selector-value:value: call( input input -- result ) ;
 M: object selector-value:value:value: call( input input input -- result ) ;
 M: object selector-value:value:value:value: call( input input input input -- result ) ;
+
+SELECTOR: new
+
+M: object selector-new new ;
+
+SELECTOR: time
+
+M: object selector-time '[ _ call( -- result ) ] time ;