]> gitweb.factorcode.org Git - factor.git/commitdiff
easy-help: refactoring
authorEduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Thu, 25 Dec 2008 12:24:50 +0000 (06:24 -0600)
committerEduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Thu, 25 Dec 2008 12:24:50 +0000 (06:24 -0600)
extra/easy-help/easy-help.factor

index 824a638fd467930709df482faa1d81ad92a56c08..6f299d6c3705afc0221bed7b9578da1103fcb03b 100644 (file)
@@ -8,47 +8,50 @@ IN: easy-help
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-: Description:
-
+: parse-text-block ( -- array )
+  
   ".." parse-multiline-string
   string-lines
   1 tail
-  [ dup "   " head? [ 4 tail     ] [ ] if ] map
-  [ dup ""    =     [ drop { $nl } ] [ ] if ] map
-  \ $description prefix
-  parsed
-  
-  ; parsing
+  [ dup "    " head? [ 4 tail ] [ ] if ] map
+  [ expand-markup ] map
+  concat
+  [ dup "" = [ drop { $nl } ] [ ] if ] map ;
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-: Example:
+: Text: parse-text-block parsed ; parsing
 
-  { $heading "Example" } parsed
+: Block: scan-word 1array parse-text-block append parsed ; parsing
 
-  ".." parse-multiline-string
-  string-lines
-  [ dup "   " head? [ 4 tail ] [ ] if ] map
-  [ "" = not ] filter
-  ! \ $example prefix
-  \ $code prefix
-  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
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+: 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:
 
-  ".." parse-multiline-string
-  string-lines
-  1 tail
-  [ dup "   " head? [ 4 tail     ] [ ] if ] map
-  [ dup ""    =     [ drop { $nl } ] [ ] if ] map
-  { $heading "Summary" } prefix
-  parsed
-  
-  ; parsing
+  { $heading "Summary" }
+  parse-text-block
+  2array parsed ; parsing
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
@@ -57,7 +60,7 @@ IN: easy-help
   ".." parse-multiline-string
   string-lines
   1 tail
-  [ dup "   " head? [ 4 tail ] [ ] if ] map
+  [ dup "    " head? [ 4 tail ] [ ] if ] map
   [ " " split1 [ " " first = ] trim-left 2array ] map
   \ $values prefix
   parsed
@@ -77,35 +80,7 @@ IN: easy-help
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-: Contract:
-
-  ".." parse-multiline-string
-  string-lines
-  1 tail
-  [ dup "   " head? [ 4 tail     ] [ ] if ] map
-  [ expand-markup ] map
-  concat
-  [ dup ""    =     [ drop { $nl } ] [ ] if ] map
-  \ $contract prefix
-  parsed
-  
-  ; parsing
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-: Notes:
-
-  ".." parse-multiline-string
-  string-lines
-  1 tail
-  [ dup "   " head? [ 4 tail     ] [ ] if ] map
-  [ expand-markup ] map
-  concat
-  [ dup ""    =     [ drop { $nl } ] [ ] if ] map
-  \ $notes prefix
-  parsed
-  
-  ; parsing
+: Heading: { $heading } ".." parse-multiline-string suffix parsed ; parsing
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!