]> gitweb.factorcode.org Git - factor.git/commitdiff
minor inspector improvements and other stuff to end day
authorSlava Pestov <slava@factorcode.org>
Mon, 16 Aug 2004 03:09:06 +0000 (03:09 +0000)
committerSlava Pestov <slava@factorcode.org>
Mon, 16 Aug 2004 03:09:06 +0000 (03:09 +0000)
TODO.FACTOR.txt
library/inspector.factor
library/platform/native/namespaces.factor
library/platform/native/parse-stream.factor
library/telnetd.factor

index 3041e287cc4167750aaa1089631f21d18fbb03f6..ba9e294ae9d272027bcfaea951d9a148c7ad0efe 100644 (file)
@@ -1,5 +1,9 @@
 0.62:\r
 \r
+- read-line: handle \r\n\r
+- flush output buffer before reading line\r
+- print: only flush in stdio stream\r
+- ignore errors from flush\r
 - can-read-line?\r
 - client connections broken\r
 - vocabulary section: what is the dictionary?\r
@@ -14,8 +18,6 @@
 - listener backspace overzealous\r
 - SIGBUS handler\r
 - handle division by zero\r
-- errors: don't show .factor-rc\r
-- inspector: sort\r
 - log-client: fix for native\r
 - telnetd: needs own history\r
 - multitasking\r
@@ -54,7 +56,6 @@
 \r
 + native:\r
 \r
-- broken pipe errors with httpd and telnetd in cfactor\r
 - read#\r
 - to_fixnum and friends: error on float\r
 ERROR: I/O error: [ "primitive_read_line_fd_8" "Resource temporarily unavailable" ]\r
index 7f7cd0b98a77dfdab547c730311347d0e0c02bf3..d9cb2691236022de8952985f7d0b1cad43f7c7be 100644 (file)
@@ -63,18 +63,31 @@ USE: vocabularies
 : value. ( max name value -- )
     >r var-name. ": " write r> . ;
 
-: describe-assoc ( alist -- )
-    dup [ car ] inject max-str-length swap
+: ?unparse ( obj -- str )
+    dup string? [ unparse ] unless ;
+
+: alist-keys>str ( alist -- alist )
+    #! Unparse non-string keys.
+    [ unswons ?unparse swons ] inject ;
+
+: alist-sort ( list -- list )
+    [ swap car swap car str-lexi> ] sort ;
+
+: name-padding ( alist -- col )
+    [ car ] inject max-str-length ;
+
+: (describe-assoc) ( alist -- )
+    dup name-padding swap
     [ dupd uncons value. ] each drop ;
+
+: describe-assoc ( alist -- )
+    alist-keys>str alist-sort (describe-assoc) ;
    
 : describe-namespace ( namespace -- )
     [ vars-values ] bind describe-assoc ;
 
-: ?unparse ( obj -- str )
-    dup string? [ unparse ] unless ;
-
 : describe-hashtable ( hashtables -- )
-    hash>alist [ unswons ?unparse swons ] inject describe-assoc ;
+    hash>alist describe-assoc ;
 
 : describe ( obj -- )
     [
index fc046856f50c3b1e05b09cc1cc96960ab10bfa72..9fc5266606cfdb397c1e48f6e97fef5fbcd43943 100644 (file)
@@ -78,12 +78,9 @@ DEFER: >n
 : set ( value variable -- ) namespace set* ;
 : put ( variable value -- ) namespace put* ;
 
-: car-str-sort ( list -- list )
-    [ swap car swap car str-lexi> ] sort ;
-
-: vars-values ( -- list ) namespace hash>alist car-str-sort ;
-: vars ( -- list ) vars-values [ car ] inject ;
-: values ( -- list ) vars-values [ cdr ] inject ;
+: vars ( -- list ) namespace hash-keys ;
+: values ( -- list ) namespace hash-values ;
+: vars-values ( -- list ) namespace hash>alist ;
 
 ! We don't have bound objects in native Factor.
 : namespace? hashtable? ;
index ae22be1e04e39e56d73935376f7d843b4e70f77c..50fad28fe3a1b0b570abaccb9eeab56cdee80a0a 100644 (file)
@@ -63,7 +63,10 @@ USE: strings
 
 : parse-stream ( name stream -- code )
     #! Uses the current namespace for temporary variables.
-    >r "parse-name" set f r> [ (parse) ] read-lines nreverse ;
+    >r "parse-name" set f r>
+    [ (parse) ] read-lines nreverse
+    "parse-name" off
+    "line-number" off ;
 
 : parse-file ( file -- code )
     dup <filecr> parse-stream ;
index e0ba8a78c26b69c6c47670bfa397546f1d1c7b5c..840f843d60dd8f49c087e0814fc1803647d9d43b 100644 (file)
@@ -54,7 +54,7 @@ USE: streams
     [
         quit-flag not
     ] [
-        dup accept telnet-client
+        dup >r accept telnet-client r>
     ] while ;
 
 : telnetd ( port -- )