2005-09-25 21:56:48 -04:00
|
|
|
! Copyright (C) 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
|
|
|
IN: inspector
|
|
|
|
USING: arrays generic hashtables io kernel kernel-internals
|
|
|
|
lists math prettyprint sequences strings vectors words ;
|
|
|
|
|
|
|
|
GENERIC: sheet ( obj -- sheet )
|
|
|
|
|
|
|
|
M: object sheet ( obj -- sheet )
|
|
|
|
dup class "slots" word-prop
|
|
|
|
dup [ second ] map -rot
|
|
|
|
[ first slot ] map-with
|
|
|
|
2array ;
|
|
|
|
|
|
|
|
M: list sheet 1array ;
|
|
|
|
|
|
|
|
M: vector sheet 1array ;
|
|
|
|
|
|
|
|
M: array sheet 1array ;
|
|
|
|
|
|
|
|
M: hashtable sheet dup hash-keys swap hash-values 2array ;
|
|
|
|
|
2005-09-27 14:35:30 -04:00
|
|
|
: format-column ( list ? -- list )
|
|
|
|
>r [ unparse-short ] map
|
|
|
|
r> [
|
|
|
|
[ 0 [ length max ] reduce ] keep
|
|
|
|
[ swap CHAR: \s pad-right ] map-with
|
|
|
|
] unless ;
|
2005-09-25 21:56:48 -04:00
|
|
|
|
|
|
|
: format-sheet ( sheet -- list )
|
2005-09-27 14:35:30 -04:00
|
|
|
#! We use an idiom to notify format-column if it is
|
|
|
|
#! formatting the last column.
|
|
|
|
dup length reverse-slice [ 0 = format-column ] 2map
|
|
|
|
flip [ " " join ] map ;
|
2005-09-25 21:56:48 -04:00
|
|
|
|
2005-09-25 21:59:22 -04:00
|
|
|
DEFER: describe
|
|
|
|
|
|
|
|
: sheet. ( sheet -- )
|
|
|
|
dup format-sheet swap peek
|
2005-09-25 21:56:48 -04:00
|
|
|
[ dup [ describe ] curry write-outliner ] 2each ;
|
|
|
|
|
2005-09-25 21:59:22 -04:00
|
|
|
: describe ( object -- ) sheet sheet. ;
|
|
|
|
|
2005-09-25 21:56:48 -04:00
|
|
|
: word. ( word -- )
|
|
|
|
dup word-name swap dup [ see ] curry write-outliner ;
|
|
|
|
|
2005-09-27 15:14:25 -04:00
|
|
|
: simple-outliner ( seq quot -- quot: obj -- )
|
2005-09-25 22:20:29 -04:00
|
|
|
swap [
|
2005-09-25 22:25:54 -04:00
|
|
|
[ unparse-short ] keep rot dupd curry write-outliner
|
2005-09-25 22:20:29 -04:00
|
|
|
] each-with ;
|
2005-09-25 21:56:48 -04:00
|
|
|
|
2005-09-25 22:20:29 -04:00
|
|
|
: words. ( vocab -- )
|
2005-09-27 15:14:25 -04:00
|
|
|
words [ see ] simple-outliner ;
|
2005-09-25 22:20:29 -04:00
|
|
|
|
|
|
|
: vocabs. ( -- )
|
2005-09-25 21:56:48 -04:00
|
|
|
#! Outlining word browser.
|
2005-09-25 22:20:29 -04:00
|
|
|
vocabs [ f over [ words. ] curry write-outliner ] each ;
|
2005-09-25 21:56:48 -04:00
|
|
|
|
2005-09-25 22:20:29 -04:00
|
|
|
: usage. ( word -- )
|
|
|
|
#! Outlining usages browser.
|
2005-09-27 15:14:25 -04:00
|
|
|
usage [ usage. ] simple-outliner ;
|
2005-09-25 22:20:29 -04:00
|
|
|
|
|
|
|
: uses. ( word -- )
|
|
|
|
#! Outlining call hierarchy browser.
|
2005-09-27 15:14:25 -04:00
|
|
|
uses [ uses. ] simple-outliner ;
|
2005-09-25 22:20:29 -04:00
|
|
|
|
2005-09-27 00:24:42 -04:00
|
|
|
: stack. ( seq -- seq )
|
|
|
|
reverse-slice >array describe ;
|
|
|
|
|
2005-09-25 21:56:48 -04:00
|
|
|
: .s datastack stack. ;
|
|
|
|
: .r callstack stack. ;
|