39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2005, 2007 Slava Pestov.
 | |
| ! See http://factorcode.org/license.txt for BSD license.
 | |
| USING: arrays definitions assocs io kernel
 | |
| math namespaces prettyprint sequences strings io.styles words
 | |
| generic tools.completion quotations parser inspector
 | |
| sorting hashtables vocabs ;
 | |
| IN: tools.crossref
 | |
| 
 | |
| : synopsis-alist ( definitions -- alist )
 | |
|     [ dup synopsis swap ] { } map>assoc ;
 | |
| 
 | |
| : definitions. ( alist -- )
 | |
|     [ write-object nl ] assoc-each ;
 | |
| 
 | |
| : (method-usage) ( word generic -- methods )
 | |
|     tuck methods
 | |
|     [ second quot-uses key? ] curry* subset
 | |
|     0 <column>
 | |
|     swap [ 2array ] curry map ;
 | |
| 
 | |
| : method-usage ( word seq -- methods )
 | |
|     [ generic? ] subset [ (method-usage) ] curry* map concat ;
 | |
| 
 | |
| : compound-usage ( words -- seq )
 | |
|     [ generic? not ] subset ;
 | |
| 
 | |
| : smart-usage ( word -- definitions )
 | |
|     \ f or
 | |
|     dup usage dup compound-usage -rot method-usage append ;
 | |
| 
 | |
| : usage. ( word -- )
 | |
|     smart-usage synopsis-alist sort-keys definitions. ;
 | |
| 
 | |
| : words-matching ( str -- seq )
 | |
|     all-words [ dup word-name ] { } map>assoc completions ;
 | |
| 
 | |
| : apropos ( str -- )
 | |
|     words-matching synopsis-alist reverse definitions. ;
 |