/unmaintained/easy-help/easy-help.factor

http://github.com/abeaumont/factor · Factor · 111 lines · 67 code · 36 blank · 8 comment · 8 complexity · 1288a0c9b65b8c0f5190d12d2ade11e8 MD5 · raw file

  1. USING: arrays assocs compiler.units
  2. grouping help help.markup help.topics kernel lexer multiline
  3. namespaces parser sequences splitting words
  4. easy-help.expand-markup ;
  5. IN: easy-help
  6. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  7. : parse-text-block ( -- array )
  8. ".." parse-multiline-string
  9. string-lines
  10. 1 tail
  11. [ dup " " head? [ 4 tail ] [ ] if ] map
  12. [ expand-markup ] map
  13. concat
  14. [ dup "" = [ drop { $nl } ] [ ] if ] map ;
  15. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  16. : Text: parse-text-block parsed ; parsing
  17. : Block: scan-word 1array parse-text-block append parsed ; parsing
  18. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  19. : Notes: { $notes } parse-text-block append parsed ; parsing
  20. : Description: { $description } parse-text-block append parsed ; parsing
  21. : Contract: { $contract } parse-text-block append parsed ; parsing
  22. : Checked-Example: { $example } parse-text-block append parsed ; parsing
  23. : Class-Description:
  24. { $class-description } parse-text-block append parsed ; parsing
  25. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  26. : Code:
  27. { $code }
  28. parse-text-block [ dup array? [ drop "" ] [ ] if ] map
  29. append
  30. parsed
  31. ; parsing
  32. : Example:
  33. { $heading "Example" }
  34. { $code }
  35. parse-text-block
  36. [ dup array? [ drop "" ] [ ] if ] map ! Each item in $code must be a string
  37. append
  38. 2array parsed ; parsing
  39. : Introduction:
  40. { $heading "Introduction" }
  41. parse-text-block
  42. 2array parsed ; parsing
  43. : Summary:
  44. { $heading "Summary" }
  45. parse-text-block
  46. 2array parsed ; parsing
  47. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  48. : Values:
  49. ".." parse-multiline-string
  50. string-lines
  51. 1 tail
  52. [ dup " " head? [ 4 tail ] [ ] if ] map
  53. [ " " split1 [ " " first = ] trim-head 2array ] map
  54. \ $values prefix
  55. parsed
  56. ; parsing
  57. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  58. : Word:
  59. scan current-vocab create dup old-definitions get
  60. [ delete-at ] with each dup set-word
  61. bootstrap-word dup set-word
  62. dup >link save-location
  63. \ ; parse-until >array swap set-word-help ; parsing
  64. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  65. : Heading: { $heading } ".." parse-multiline-string suffix parsed ; parsing
  66. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  67. : List:
  68. { $list }
  69. ".." parse-multiline-string
  70. string-lines
  71. 1 tail
  72. [ dup " " head? [ 4 tail ] [ ] if ] map
  73. [ expand-markup ] map
  74. append parsed
  75. ; parsing