112 lines
2.6 KiB
Factor
112 lines
2.6 KiB
Factor
|
|
USING: arrays assocs compiler.units
|
|
grouping help help.markup help.topics kernel lexer multiline
|
|
namespaces parser sequences splitting words
|
|
easy-help.expand-markup ;
|
|
|
|
IN: easy-help
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: parse-text-block ( -- array )
|
|
|
|
".." parse-multiline-string
|
|
string-lines
|
|
1 tail
|
|
[ dup " " head? [ 4 tail ] [ ] if ] map
|
|
[ expand-markup ] map
|
|
concat
|
|
[ dup "" = [ drop { $nl } ] [ ] if ] map ;
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: Text: parse-text-block parsed ; parsing
|
|
|
|
: Block: scan-word 1array parse-text-block append parsed ; parsing
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: Notes: { $notes } parse-text-block append parsed ; parsing
|
|
: Description: { $description } parse-text-block append parsed ; parsing
|
|
: Contract: { $contract } parse-text-block append parsed ; parsing
|
|
: Checked-Example: { $example } parse-text-block append parsed ; parsing
|
|
|
|
: Class-Description:
|
|
{ $class-description } parse-text-block append parsed ; parsing
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: Code:
|
|
|
|
{ $code }
|
|
parse-text-block [ dup array? [ drop "" ] [ ] if ] map
|
|
append
|
|
parsed
|
|
|
|
; parsing
|
|
|
|
: Example:
|
|
{ $heading "Example" }
|
|
{ $code }
|
|
parse-text-block
|
|
[ dup array? [ drop "" ] [ ] if ] map ! Each item in $code must be a string
|
|
append
|
|
2array parsed ; parsing
|
|
|
|
: Introduction:
|
|
|
|
{ $heading "Introduction" }
|
|
parse-text-block
|
|
2array parsed ; parsing
|
|
|
|
: Summary:
|
|
|
|
{ $heading "Summary" }
|
|
parse-text-block
|
|
2array parsed ; parsing
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: Values:
|
|
|
|
".." parse-multiline-string
|
|
string-lines
|
|
1 tail
|
|
[ dup " " head? [ 4 tail ] [ ] if ] map
|
|
[ " " split1 [ " " first = ] trim-head 2array ] map
|
|
\ $values prefix
|
|
parsed
|
|
|
|
; parsing
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: Word:
|
|
|
|
scan current-vocab create dup old-definitions get
|
|
[ delete-at ] with each dup set-word
|
|
|
|
bootstrap-word dup set-word
|
|
dup >link save-location
|
|
\ ; parse-until >array swap set-word-help ; parsing
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: Heading: { $heading } ".." parse-multiline-string suffix parsed ; parsing
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: List:
|
|
|
|
{ $list }
|
|
|
|
".." parse-multiline-string
|
|
string-lines
|
|
1 tail
|
|
[ dup " " head? [ 4 tail ] [ ] if ] map
|
|
[ expand-markup ] map
|
|
|
|
append parsed
|
|
|
|
; parsing
|