factor/library/help/help.factor

58 lines
1.2 KiB
Factor
Raw Normal View History

! Copyright (C) 2005, 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2005-12-01 00:53:12 -05:00
IN: help
USING: arrays hashtables io kernel namespaces strings ;
! 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 ;
! Special case: f help
M: f article-title drop \ f article-title ;
M: f article-content drop \ f article-content ;
! Glossary of terms
SYMBOL: terms
TUPLE: term entry ;
M: term article-title term-entry ;
M: term article-content
term-entry terms get hash
[ "No such glossary entry" ] unless* ;
: add-term ( term element -- ) swap terms get set-hash ;
SYMBOL: last-block
2005-12-01 00:53:12 -05:00
2006-05-20 17:02:08 -04:00
: (help) ( element -- )
default-style [
2006-05-20 17:02:08 -04:00
last-block on print-element
] with-nesting* terpri ;
2005-12-01 00:53:12 -05:00
2005-12-28 20:25:17 -05:00
DEFER: $heading
2005-12-01 00:53:12 -05:00
2005-12-28 20:25:17 -05:00
: help ( topic -- )
default-style [ dup article-title $heading ] with-style
2006-05-20 17:02:08 -04:00
article-content (help) ;
2005-12-28 20:25:17 -05:00
: glossary ( name -- ) <term> help ;
2006-01-19 03:28:10 -05:00
: handbook ( -- ) "handbook" help ;
: tutorial ( -- ) "tutorial" help ;