]> gitweb.factorcode.org Git - factor.git/blob - extra/easy-help/easy-help.factor
6f299d6c3705afc0221bed7b9578da1103fcb03b
[factor.git] / extra / easy-help / easy-help.factor
1
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 ;
6
7 IN: easy-help
8
9 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
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 ;
20
21 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
22
23 : Text: parse-text-block parsed ; parsing
24
25 : Block: scan-word 1array parse-text-block append parsed ; parsing
26
27 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
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
33
34 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
35
36 : Example:
37   { $heading "Example" }
38   { $code }
39   parse-text-block
40   [ dup array? [ drop "" ] [ ] if ] map ! Each item in $code must be a string
41   append 
42   2array parsed ; parsing
43
44 : Introduction:
45
46   { $heading "Introduction" }
47   parse-text-block
48   2array parsed ; parsing
49
50 : Summary:
51
52   { $heading "Summary" }
53   parse-text-block
54   2array parsed ; parsing
55
56 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
57
58 : Values:
59
60   ".." parse-multiline-string
61   string-lines
62   1 tail
63   [ dup "    " head? [ 4 tail ] [ ] if ] map
64   [ " " split1 [ " " first = ] trim-left 2array ] map
65   \ $values prefix
66   parsed
67
68   ; parsing
69
70 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
71
72 : Word:
73
74   scan current-vocab create dup old-definitions get
75   [ delete-at ] with each dup set-word
76
77   bootstrap-word dup set-word
78   dup >link save-location
79   \ ; parse-until >array swap set-word-help ; parsing
80
81 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
82
83 : Heading: { $heading } ".." parse-multiline-string suffix parsed ; parsing
84
85 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
86