Fix &add, etc
							parent
							
								
									fd4542a41d
								
							
						
					
					
						commit
						a25b0a8cb1
					
				| 
						 | 
				
			
			@ -9,3 +9,29 @@ H{ } describe
 | 
			
		|||
H{ } describe
 | 
			
		||||
 | 
			
		||||
[ "fixnum instance\n" ] [ [ 3 describe ] with-string-writer ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ inspector-hook get-global inspector-hook set ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ H{ } clone inspect ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ "a" "b" &add ] unit-test
 | 
			
		||||
 | 
			
		||||
[ H{ { "b" "a" } } ] [ me get ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ "x" 0 &put ] unit-test
 | 
			
		||||
 | 
			
		||||
[ H{ { "b" "x" } } ] [ me get ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ 0 &at ] unit-test
 | 
			
		||||
 | 
			
		||||
[ "x" ] [ me get ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ &back ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ "y" 0 &rename ] unit-test
 | 
			
		||||
 | 
			
		||||
[ H{ { "y" "x" } } ] [ me get ] unit-test
 | 
			
		||||
 | 
			
		||||
[ ] [ 0 &delete ] unit-test
 | 
			
		||||
 | 
			
		||||
[ H{ } ] [ me get ] unit-test
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
USING: arrays generic hashtables io kernel assocs math
 | 
			
		||||
namespaces prettyprint sequences strings io.styles vectors words
 | 
			
		||||
quotations mirrors splitting math.parser classes vocabs refs
 | 
			
		||||
sets ;
 | 
			
		||||
sets sorting ;
 | 
			
		||||
IN: inspector
 | 
			
		||||
 | 
			
		||||
GENERIC: summary ( object -- string )
 | 
			
		||||
| 
						 | 
				
			
			@ -78,10 +78,17 @@ SYMBOL: +editable+
 | 
			
		|||
 | 
			
		||||
: summary. ( obj -- ) [ summary ] keep write-object nl ;
 | 
			
		||||
 | 
			
		||||
: sorted-keys ( assoc -- alist )
 | 
			
		||||
    dup mirror? [ keys ] [
 | 
			
		||||
        keys
 | 
			
		||||
        [ [ unparse-short ] keep ] { } map>assoc
 | 
			
		||||
        sort-keys values
 | 
			
		||||
    ] if ;
 | 
			
		||||
 | 
			
		||||
: describe* ( obj flags -- )
 | 
			
		||||
    clone [
 | 
			
		||||
        dup summary.
 | 
			
		||||
        make-mirror dup keys dup empty? [
 | 
			
		||||
        make-mirror dup sorted-keys dup empty? [
 | 
			
		||||
            2drop
 | 
			
		||||
        ] [
 | 
			
		||||
            dup enum? [ +sequence+ on ] when
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: assocs hashtables kernel sequences generic words
 | 
			
		||||
arrays classes slots slots.private classes.tuple math vectors
 | 
			
		||||
quotations sorting prettyprint accessors ;
 | 
			
		||||
quotations accessors ;
 | 
			
		||||
IN: mirrors
 | 
			
		||||
 | 
			
		||||
: all-slots ( class -- slots )
 | 
			
		||||
| 
						 | 
				
			
			@ -47,13 +47,8 @@ M: mirror assoc-size mirror-slots length ;
 | 
			
		|||
 | 
			
		||||
INSTANCE: mirror assoc
 | 
			
		||||
 | 
			
		||||
: sort-assoc ( assoc -- alist )
 | 
			
		||||
    >alist
 | 
			
		||||
    [ [ first unparse-short ] keep ] { } map>assoc
 | 
			
		||||
    sort-keys values ;
 | 
			
		||||
 | 
			
		||||
GENERIC: make-mirror ( obj -- assoc )
 | 
			
		||||
M: hashtable make-mirror sort-assoc ;
 | 
			
		||||
M: hashtable make-mirror ;
 | 
			
		||||
M: integer make-mirror drop f ;
 | 
			
		||||
M: array make-mirror <enum> ;
 | 
			
		||||
M: vector make-mirror <enum> ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue