| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Copyright (C) 2005, 2007 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license.x | 
					
						
							| 
									
										
										
										
											2008-08-29 11:26:14 -04:00
										 |  |  | USING: accessors arrays definitions generic assocs | 
					
						
							| 
									
										
										
										
											2008-09-10 21:07:00 -04:00
										 |  |  | io kernel namespaces make prettyprint prettyprint.sections | 
					
						
							| 
									
										
										
										
											2008-07-02 01:20:01 -04:00
										 |  |  | sequences words summary classes strings vocabs ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: help.topics | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TUPLE: link name ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-12 20:55:06 -04:00
										 |  |  | MIXIN: topic | 
					
						
							|  |  |  | INSTANCE: link topic | 
					
						
							|  |  |  | INSTANCE: word topic | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | GENERIC: >link ( obj -- obj )
 | 
					
						
							|  |  |  | M: link >link ;
 | 
					
						
							|  |  |  | M: vocab-spec >link ;
 | 
					
						
							| 
									
										
										
										
											2008-04-13 16:06:27 -04:00
										 |  |  | M: object >link link boa ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-29 11:26:14 -04:00
										 |  |  | PREDICATE: word-link < link name>> word? ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: link summary | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         "Link: " % | 
					
						
							| 
									
										
										
										
											2008-08-29 11:26:14 -04:00
										 |  |  |         name>> dup word? [ summary ] [ unparse ] if % | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     ] "" make ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Help articles | 
					
						
							|  |  |  | SYMBOL: articles | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | articles global [ H{ } assoc-like ] change-at
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | SYMBOL: article-xref | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | article-xref global [ H{ } assoc-like ] change-at
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GENERIC: article-name ( topic -- string )
 | 
					
						
							| 
									
										
										
										
											2008-08-31 08:45:33 -04:00
										 |  |  | GENERIC: article-title ( topic -- string )
 | 
					
						
							|  |  |  | GENERIC: article-content ( topic -- content )
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | GENERIC: article-parent ( topic -- parent )
 | 
					
						
							|  |  |  | GENERIC: set-article-parent ( parent topic -- )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TUPLE: article title content loc ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : <article> ( title content -- article )
 | 
					
						
							| 
									
										
										
										
											2008-04-13 16:06:27 -04:00
										 |  |  |     f \ article boa ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-31 08:45:33 -04:00
										 |  |  | M: article article-name title>> ;
 | 
					
						
							|  |  |  | M: article article-title title>> ;
 | 
					
						
							|  |  |  | M: article article-content content>> ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-29 11:26:14 -04:00
										 |  |  | ERROR: no-article name ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: no-article summary | 
					
						
							|  |  |  |     drop "Help article does not exist" ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : article ( name -- article )
 | 
					
						
							|  |  |  |     dup articles get at* [ nip ] [ drop no-article ] if ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: object article-name article article-name ;
 | 
					
						
							|  |  |  | M: object article-title article article-title ;
 | 
					
						
							|  |  |  | M: object article-content article article-content ;
 | 
					
						
							|  |  |  | M: object article-parent article-xref get at ;
 | 
					
						
							|  |  |  | M: object set-article-parent article-xref get set-at ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-29 11:26:14 -04:00
										 |  |  | M: link article-name name>> article-name ;
 | 
					
						
							|  |  |  | M: link article-title name>> article-title ;
 | 
					
						
							|  |  |  | M: link article-content name>> article-content ;
 | 
					
						
							|  |  |  | M: link article-parent name>> article-parent ;
 | 
					
						
							|  |  |  | M: link set-article-parent name>> set-article-parent ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Special case: f help | 
					
						
							|  |  |  | M: f article-name drop \ f article-name ;
 | 
					
						
							|  |  |  | M: f article-title drop \ f article-title ;
 | 
					
						
							|  |  |  | M: f article-content drop \ f article-content ;
 | 
					
						
							|  |  |  | M: f article-parent drop \ f article-parent ;
 | 
					
						
							|  |  |  | M: f set-article-parent drop \ f set-article-parent ;
 |