2005-12-01 00:58:39 -05:00
|
|
|
! Copyright (C) 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
|
|
|
IN: help
|
|
|
|
USING: arrays hashtables io kernel namespaces parser sequences
|
|
|
|
strings styles words ;
|
|
|
|
|
|
|
|
! Markup
|
|
|
|
GENERIC: print-element
|
|
|
|
|
|
|
|
! Help articles
|
|
|
|
SYMBOL: articles
|
|
|
|
|
|
|
|
TUPLE: article title content ;
|
|
|
|
|
|
|
|
: article ( name -- article ) articles get hash ;
|
|
|
|
|
|
|
|
: add-article ( name title element -- )
|
|
|
|
<article> swap articles get set-hash ;
|
|
|
|
|
|
|
|
M: string article-title article article-title ;
|
|
|
|
|
|
|
|
M: string article-content article article-content ;
|
|
|
|
|
|
|
|
! Word help
|
|
|
|
M: word article-title "The " swap word-name " word" append3 ;
|
|
|
|
|
|
|
|
M: word article-content
|
|
|
|
dup "help" word-prop [ ] [
|
|
|
|
"No documentation found for " swap word-name append
|
|
|
|
] ?if ;
|
|
|
|
|
|
|
|
! Glossary of terms
|
|
|
|
SYMBOL: terms
|
|
|
|
|
|
|
|
TUPLE: term entry ;
|
|
|
|
|
|
|
|
M: term article-title term-entry ;
|
|
|
|
|
2005-12-01 01:09:52 -05:00
|
|
|
M: term article-content
|
|
|
|
term-entry terms get hash
|
|
|
|
[ "No such glossary entry" ] unless* ;
|
|
|
|
|
|
|
|
: add-term ( term element -- ) swap terms get set-hash ;
|
|
|
|
|
|
|
|
! Missing topics
|
|
|
|
M: f article-title drop "No such topic" ;
|
|
|
|
|
|
|
|
M: f article-content drop "No such topic" ;
|