Clean up some duplication
[factor/jcg.git] / extra / easy-help / easy-help.factor
blob151e66380d38a337d52f497c896683a58ea18554
2 USING: arrays assocs compiler.units 
3        grouping help help.markup help.topics kernel lexer multiline
4        namespaces parser sequences splitting words
5        easy-help.expand-markup ;
7 IN: easy-help
9 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11 : parse-text-block ( -- array )
12   
13   ".." parse-multiline-string
14   string-lines
15   1 tail
16   [ dup "    " head? [ 4 tail ] [ ] if ] map
17   [ expand-markup ] map
18   concat
19   [ dup "" = [ drop { $nl } ] [ ] if ] map ;
21 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
23 : Text: parse-text-block parsed ; parsing
25 : Block: scan-word 1array parse-text-block append parsed ; parsing
27 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
29 : Notes:           { $notes       } parse-text-block append parsed ; parsing
30 : Description:     { $description } parse-text-block append parsed ; parsing
31 : Contract:        { $contract    } parse-text-block append parsed ; parsing
32 : Checked-Example: { $example     } parse-text-block append parsed ; parsing
34 : Class-Description:
35   { $class-description } parse-text-block append parsed ; parsing
37 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
39 : Code:
40   
41   { $code }
42   parse-text-block [ dup array? [ drop "" ] [ ] if ] map
43   append
44   parsed
45   
46   ; parsing
48 : Example:
49   { $heading "Example" }
50   { $code }
51   parse-text-block
52   [ dup array? [ drop "" ] [ ] if ] map ! Each item in $code must be a string
53   append 
54   2array parsed ; parsing
56 : Introduction:
58   { $heading "Introduction" }
59   parse-text-block
60   2array parsed ; parsing
62 : Summary:
64   { $heading "Summary" }
65   parse-text-block
66   2array parsed ; parsing
68 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
70 : Values:
72   ".." parse-multiline-string
73   string-lines
74   1 tail
75   [ dup "    " head? [ 4 tail ] [ ] if ] map
76   [ " " split1 [ " " first = ] trim-left 2array ] map
77   \ $values prefix
78   parsed
80   ; parsing
82 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
84 : Word:
86   scan current-vocab create dup old-definitions get
87   [ delete-at ] with each dup set-word
89   bootstrap-word dup set-word
90   dup >link save-location
91   \ ; parse-until >array swap set-word-help ; parsing
93 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
95 : Heading: { $heading } ".." parse-multiline-string suffix parsed ; parsing
97 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
99 : List:
101   { $list }
103   ".." parse-multiline-string
104   string-lines
105   1 tail
106   [ dup "    " head? [ 4 tail ] [ ] if ] map
107   [ expand-markup ] map
109   append parsed
111   ; parsing