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