]> gitweb.factorcode.org Git - factor.git/commitdiff
help.markup: adding $sequence for describing sequence values.
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 14 Jul 2015 22:55:18 +0000 (15:55 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 14 Jul 2015 22:55:18 +0000 (15:55 -0700)
basis/help/help-docs.factor
basis/help/markup/markup.factor

index 9b0528080af1a36584bb67d7fa255041321c7cf4..7d449f16ba3504dd6b2145b374ca541a4297b9ba 100644 (file)
@@ -45,6 +45,7 @@ ARTICLE: "block-elements" "Block elements"
     $maybe
     $or
     $quotation
+    $sequence
 }
 "Boilerplate paragraphs:"
 { $subsections
@@ -409,6 +410,19 @@ HELP: $quotation
     { $markup-example { $quotation ( obj -- ) } }
 } ;
 
+HELP: $sequence
+{ $values { "element" "an array of element types" } }
+{ $description
+    "Produces the text “a sequence of " { $emphasis "element types" } "”."
+}
+{ $examples
+    { $markup-example { $sequence number } }
+    { $markup-example { $sequence real complex } }
+    { $markup-example { $sequence rational float complex } }
+    { $markup-example { $sequence integer ratio float complex } }
+    { $markup-example { $sequence fixnum bignum ratio float complex } }
+} ;
+
 HELP: $list
 { $values { "element" "an array of markup elements" } }
 { $description "Prints a bulleted list of markup elements." }
index 70a0c85b4392ebe4883098850d096d008c70e9f8..051fb8587a292847a61adc9039376f2b15b0b3ce 100644 (file)
@@ -347,14 +347,11 @@ PRIVATE>
 
 GENERIC: ($instance) ( element -- )
 
-M: word ($instance)
-    dup name>> a/an write bl ($link) ;
+M: word ($instance) dup name>> a/an write bl ($link) ;
 
-M: string ($instance)
-    write ;
+M: string ($instance) write ;
 
-M: f ($instance)
-    drop { f } $link ;
+M: f ($instance) ($link) ;
 
 : $instance ( element -- ) first ($instance) ;
 
@@ -379,6 +376,23 @@ M: f ($instance)
     { "a " { $link quotation } " with stack effect " }
     print-element $snippet ;
 
+: ($instances) ( element -- )
+     dup word? [ ($link) "s" print-element ] [ print-element ] if ;
+
+: $sequence ( element -- )
+    { "a " { $link sequence } " of " } print-element
+    dup length {
+        { 1 [ first ($instances) ] }
+        { 2 [ first2 [ ($instances) " or " print-element ] [ ($instances) ] bi* ] }
+        [
+            drop
+            unclip-last
+            [ [ ($instances) ", " print-element ] each ]
+            [ "or " print-element ($instances) ]
+            bi*
+        ]
+    } case ;
+
 : values-row ( seq -- seq )
     unclip \ $snippet swap present 2array
     swap dup first word? [ \ $instance prefix ] when 2array ;