| 
									
										
										
										
											2010-02-09 04:21:05 -05:00
										 |  |  | ! Copyright (C) 2005, 2010 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! 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 ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-23 19:34:33 -04:00
										 |  |  | INSTANCE: link definition-mixin | 
					
						
							| 
									
										
										
										
											2009-03-26 22:27:45 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-12 20:55:06 -04:00
										 |  |  | MIXIN: topic | 
					
						
							| 
									
										
										
										
											2009-03-26 22:27:45 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-12 20:55:06 -04:00
										 |  |  | INSTANCE: link topic | 
					
						
							| 
									
										
										
										
											2009-03-26 22:27:45 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-12 20:55:06 -04:00
										 |  |  | 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 ;
 | 
					
						
							| 
									
										
										
										
											2008-12-20 18:32:38 -05:00
										 |  |  | M: f >link drop \ f >link ;
 | 
					
						
							| 
									
										
										
										
											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-12-11 17:47:38 -05:00
										 |  |  |         name>> dup word? [ summary ] [ unparse-short ] if % | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     ] "" make ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Help articles | 
					
						
							|  |  |  | SYMBOL: articles | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 17:16:12 -05:00
										 |  |  | articles [ H{ } clone ] initialize
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |      | 
					
						
							|  |  |  | SYMBOL: article-xref | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 17:16:12 -05:00
										 |  |  | article-xref [ H{ } clone ] initialize
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-09 04:21:05 -05:00
										 |  |  | GENERIC: valid-article? ( topic -- ? )
 | 
					
						
							| 
									
										
										
										
											2008-08-31 08:45:33 -04:00
										 |  |  | GENERIC: article-title ( topic -- string )
 | 
					
						
							| 
									
										
										
										
											2011-09-08 21:18:47 -04:00
										 |  |  | GENERIC: article-name ( topic -- string )
 | 
					
						
							| 
									
										
										
										
											2008-08-31 08:45:33 -04:00
										 |  |  | GENERIC: article-content ( topic -- content )
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | GENERIC: article-parent ( topic -- parent )
 | 
					
						
							|  |  |  | GENERIC: set-article-parent ( parent topic -- )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-08 21:18:47 -04:00
										 |  |  | M: object article-name article-title ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-09 04:21:05 -05:00
										 |  |  | M: article valid-article? drop t ;
 | 
					
						
							| 
									
										
										
										
											2008-08-31 08:45:33 -04:00
										 |  |  | 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" ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-21 01:33:47 -04:00
										 |  |  | : lookup-article ( name -- article )
 | 
					
						
							| 
									
										
										
										
											2009-02-22 18:52:59 -05:00
										 |  |  |     articles get ?at [ no-article ] unless ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-09 04:21:05 -05:00
										 |  |  | M: object valid-article? articles get key? ;
 | 
					
						
							| 
									
										
										
										
											2012-06-21 01:33:47 -04:00
										 |  |  | M: object article-title lookup-article article-title ;
 | 
					
						
							|  |  |  | M: object article-content lookup-article article-content ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | M: object article-parent article-xref get at ;
 | 
					
						
							|  |  |  | M: object set-article-parent article-xref get set-at ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-09 04:21:05 -05:00
										 |  |  | M: link valid-article? name>> valid-article? ;
 | 
					
						
							| 
									
										
										
										
											2008-08-29 11:26:14 -04:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2010-02-09 04:21:05 -05:00
										 |  |  | M: f valid-article? drop t ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | M: f article-title drop \ f article-title ;
 | 
					
						
							|  |  |  | M: f article-content drop \ f article-content ;
 | 
					
						
							|  |  |  | M: f article-parent drop \ f article-parent ;
 | 
					
						
							| 
									
										
										
										
											2013-03-23 19:34:33 -04:00
										 |  |  | M: f set-article-parent drop \ f set-article-parent ;
 |