From 84e5c21fa908e60e0b2e298804e9fc6782e961cc Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Tue, 18 Jan 2011 18:35:48 +0900 Subject: [PATCH 01/20] help.tutorial: minor fix --- basis/help/tutorial/tutorial.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/help/tutorial/tutorial.factor b/basis/help/tutorial/tutorial.factor index ce9c4b4676..b3e306ac56 100644 --- a/basis/help/tutorial/tutorial.factor +++ b/basis/help/tutorial/tutorial.factor @@ -102,7 +102,7 @@ $nl "For example, we'd like it to identify the following as a palindrome:" { $code "\"A man, a plan, a canal: Panama.\"" } "However, right now, the simplistic algorithm we use says this is not a palindrome:" -{ $unchecked-example "\"A man, a plan, a canal: Panama.\" palindrome?" "f" } +{ $unchecked-example "\"A man, a plan, a canal: Panama.\" palindrome? ." "f" } "We would like it to output " { $link t } " there. We can encode this requirement with a unit test that we add to " { $snippet "palindrome-tests.factor" } ":" { $code "[ t ] [ \"A man, a plan, a canal: Panama.\" palindrome? ] unit-test" } "If you now run unit tests, you will see a unit test failure:" From e8ce62c64e64d50ad0b76786eeb023c57cf72d02 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Tue, 18 Jan 2011 21:18:35 +0900 Subject: [PATCH 02/20] math.intervals: fix some typos in docs --- basis/math/intervals/intervals-docs.factor | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/basis/math/intervals/intervals-docs.factor b/basis/math/intervals/intervals-docs.factor index 7e0a9a3b51..fd6a72807f 100644 --- a/basis/math/intervals/intervals-docs.factor +++ b/basis/math/intervals/intervals-docs.factor @@ -184,23 +184,23 @@ HELP: interval-max HELP: interval-mod { $values { "i1" interval } { "i2" interval } { "i3" interval } } -{ $description "Outputs an interval containing all possible values obtained by aplying " { $link mod } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; +{ $description "Outputs an interval containing all possible values obtained by applying " { $link mod } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; HELP: interval-rem { $values { "i1" interval } { "i2" interval } { "i3" interval } } -{ $description "Outputs an interval containing all possible values obtained by aplying " { $link rem } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; +{ $description "Outputs an interval containing all possible values obtained by applying " { $link rem } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; HELP: interval-bitand { $values { "i1" interval } { "i2" interval } { "i3" interval } } -{ $description "Outputs an interval containing all possible values obtained by aplying " { $link bitand } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; +{ $description "Outputs an interval containing all possible values obtained by applying " { $link bitand } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; HELP: interval-bitor { $values { "i1" interval } { "i2" interval } { "i3" interval } } -{ $description "Outputs an interval containing all possible values obtained by aplying " { $link bitor } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; +{ $description "Outputs an interval containing all possible values obtained by applying " { $link bitor } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; HELP: interval-bitxor { $values { "i1" interval } { "i2" interval } { "i3" interval } } -{ $description "Outputs an interval containing all possible values obtained by aplying " { $link bitxor } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; +{ $description "Outputs an interval containing all possible values obtained by applying " { $link bitxor } " to elements of " { $snippet "i1" } " and " { $snippet "i2" } "." } ; HELP: interval-min { $values { "i1" interval } { "i2" interval } { "i3" interval } } From 8b1fbbf3b7bfc3019beb8f1cab0f3413eca293d2 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Tue, 18 Jan 2011 22:30:53 +0900 Subject: [PATCH 03/20] math.statistics: fix a few typos in docs --- basis/math/statistics/statistics-docs.factor | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/basis/math/statistics/statistics-docs.factor b/basis/math/statistics/statistics-docs.factor index f7d108dddb..85c1f4a0cc 100644 --- a/basis/math/statistics/statistics-docs.factor +++ b/basis/math/statistics/statistics-docs.factor @@ -34,7 +34,7 @@ HELP: range { $description "Computes the difference of the maximum and minimum values in " { $snippet "seq" } "." } { $examples { $example "USING: math.statistics prettyprint ;" "{ 1 2 3 } range ." "2" } - { $example "USING: math.statistics prettyprint ;" "{ 1 2 3 4 } range ." "3" } } ; + { $example "USING: math.statistics prettyprint ;" "{ 1 2 3 4 } range ." "3" } } ; HELP: minmax { $values { "seq" sequence } { "min" real } { "max" real } } @@ -75,7 +75,7 @@ HELP: histogram { "seq" sequence } { "hashtable" hashtable } } -{ $examples +{ $examples { $example "! Count the number of times an element appears in a sequence." "USING: prettyprint math.statistics ;" "\"aaabc\" histogram ." @@ -88,21 +88,21 @@ HELP: histogram! { $values { "hashtable" hashtable } { "seq" sequence } } -{ $examples +{ $examples { $example "! Count the number of times the elements of two sequences appear." "USING: prettyprint math.statistics ;" "\"aaabc\" histogram \"aaaaaabc\" histogram! ." "H{ { 97 9 } { 98 2 } { 99 2 } }" } } -{ $description "Takes an existing hashtable and uses " { $link histogram } " to continue counting the number of occurences of each element." } ; +{ $description "Takes an existing hashtable and uses " { $link histogram } " to continue counting the number of occurrences of each element." } ; HELP: sorted-histogram { $values { "seq" sequence } { "alist" "an array of key/value pairs" } } -{ $description "Outputs a " { $link histogram } " of a sequence sorted by number of occurences from lowest to highest." } +{ $description "Outputs a " { $link histogram } " of a sequence sorted by number of occurrences from lowest to highest." } { $examples { $example "USING: prettyprint math.statistics ;" """"abababbbbbbc" sorted-histogram .""" @@ -115,7 +115,7 @@ HELP: sequence>assoc { "seq" sequence } { "quot" quotation } { "exemplar" "an exemplar assoc" } { "assoc" assoc } } -{ $examples +{ $examples { $example "! Iterate over a sequence and increment the count at each element" "USING: assocs prettyprint math.statistics ;" "\"aaabc\" [ inc-at ] H{ } sequence>assoc ." @@ -128,7 +128,7 @@ HELP: sequence>assoc! { $values { "assoc" assoc } { "seq" sequence } { "quot" quotation } } -{ $examples +{ $examples { $example "! Iterate over a sequence and add the counts to an existing assoc" "USING: assocs prettyprint math.statistics kernel ;" "H{ { 97 2 } { 98 1 } } clone \"aaabc\" [ inc-at ] sequence>assoc! ." @@ -142,7 +142,7 @@ HELP: sequence>hashtable { "seq" sequence } { "quot" quotation } { "hashtable" hashtable } } -{ $examples +{ $examples { $example "! Count the number of times an element occurs in a sequence" "USING: assocs prettyprint math.statistics ;" "\"aaabc\" [ inc-at ] sequence>hashtable ." From cb06cba85795c77dcf961ac04b5a99d4f9c55f65 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Tue, 18 Jan 2011 23:19:21 +0900 Subject: [PATCH 04/20] math.statistics: in some words, interchanging the positions of the $examples and a $description --- basis/math/statistics/statistics-docs.factor | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/basis/math/statistics/statistics-docs.factor b/basis/math/statistics/statistics-docs.factor index 85c1f4a0cc..63263e603c 100644 --- a/basis/math/statistics/statistics-docs.factor +++ b/basis/math/statistics/statistics-docs.factor @@ -75,27 +75,27 @@ HELP: histogram { "seq" sequence } { "hashtable" hashtable } } +{ $description "Returns a hashtable where the keys are the elements of the sequence and the values are the number of times they appeared in that sequence." } { $examples { $example "! Count the number of times an element appears in a sequence." "USING: prettyprint math.statistics ;" "\"aaabc\" histogram ." "H{ { 97 3 } { 98 1 } { 99 1 } }" } -} -{ $description "Returns a hashtable where the keys are the elements of the sequence and the values are the number of times they appeared in that sequence." } ; +} ; HELP: histogram! { $values { "hashtable" hashtable } { "seq" sequence } } +{ $description "Takes an existing hashtable and uses " { $link histogram } " to continue counting the number of occurrences of each element." } { $examples { $example "! Count the number of times the elements of two sequences appear." "USING: prettyprint math.statistics ;" "\"aaabc\" histogram \"aaaaaabc\" histogram! ." "H{ { 97 9 } { 98 2 } { 99 2 } }" } -} -{ $description "Takes an existing hashtable and uses " { $link histogram } " to continue counting the number of occurrences of each element." } ; +} ; HELP: sorted-histogram { $values @@ -115,41 +115,41 @@ HELP: sequence>assoc { "seq" sequence } { "quot" quotation } { "exemplar" "an exemplar assoc" } { "assoc" assoc } } +{ $description "Iterates over a sequence, allowing elements of the sequence to be added to a newly created " { $snippet "assoc" } " according to the passed quotation." } { $examples { $example "! Iterate over a sequence and increment the count at each element" "USING: assocs prettyprint math.statistics ;" "\"aaabc\" [ inc-at ] H{ } sequence>assoc ." "H{ { 97 3 } { 98 1 } { 99 1 } }" } -} -{ $description "Iterates over a sequence, allowing elements of the sequence to be added to a newly created " { $snippet "assoc" } " according to the passed quotation." } ; +} ; HELP: sequence>assoc! { $values { "assoc" assoc } { "seq" sequence } { "quot" quotation } } +{ $description "Iterates over a sequence, allowing elements of the sequence to be added to an existing " { $snippet "assoc" } " according to the passed quotation." } { $examples { $example "! Iterate over a sequence and add the counts to an existing assoc" "USING: assocs prettyprint math.statistics kernel ;" "H{ { 97 2 } { 98 1 } } clone \"aaabc\" [ inc-at ] sequence>assoc! ." "H{ { 97 5 } { 98 2 } { 99 1 } }" } -} -{ $description "Iterates over a sequence, allowing elements of the sequence to be added to an existing " { $snippet "assoc" } " according to the passed quotation." } ; +} ; HELP: sequence>hashtable { $values { "seq" sequence } { "quot" quotation } { "hashtable" hashtable } } +{ $description "Iterates over a sequence, allowing elements of the sequence to be added to a hashtable according to the passed quotation." } { $examples { $example "! Count the number of times an element occurs in a sequence" "USING: assocs prettyprint math.statistics ;" "\"aaabc\" [ inc-at ] sequence>hashtable ." "H{ { 97 3 } { 98 1 } { 99 1 } }" } -} -{ $description "Iterates over a sequence, allowing elements of the sequence to be added to a hashtable according to the passed quotation." } ; +} ; ARTICLE: "histogram" "Computing histograms" "Counting elements in a sequence:" From 5043611252bd8ef80b8abad4fb49604ba254eb39 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Tue, 18 Jan 2011 23:35:52 +0900 Subject: [PATCH 05/20] math.polynomials: fix typo in description of pextend-conv word --- basis/math/polynomials/polynomials-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/math/polynomials/polynomials-docs.factor b/basis/math/polynomials/polynomials-docs.factor index dd55c3dd3f..ce00fcb495 100644 --- a/basis/math/polynomials/polynomials-docs.factor +++ b/basis/math/polynomials/polynomials-docs.factor @@ -62,7 +62,7 @@ HELP: n*p HELP: pextend-conv { $values { "p" "a polynomial" } { "q" "a polynomial" } { "p'" "a polynomial" } { "q'" "a polynomial" } } -{ $description "Convulution, extending to " { $snippet "p_m + q_n - 1" } "." } +{ $description "Convolution, extending to " { $snippet "p_m + q_n - 1" } "." } { $examples { $example "USING: kernel math.polynomials prettyprint ;" "{ 1 0 1 } { 0 1 } pextend-conv [ . ] bi@" "{ 1 0 1 0 }\n{ 0 1 0 0 }" } } ; HELP: p* From 904d85860a87489ac7118a8d0904b07a08b57a0c Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Thu, 20 Jan 2011 23:39:30 +0900 Subject: [PATCH 06/20] peg.ebnf: fix minor typo in docs --- basis/peg/ebnf/ebnf-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/peg/ebnf/ebnf-docs.factor b/basis/peg/ebnf/ebnf-docs.factor index 2ffc7e0b29..7b740a4dc3 100644 --- a/basis/peg/ebnf/ebnf-docs.factor +++ b/basis/peg/ebnf/ebnf-docs.factor @@ -274,7 +274,7 @@ ARTICLE: "peg.ebnf.variable" "Variable" ; ARTICLE: "peg.ebnf.foreign-rules" "Foreign Rules" -"Rules can call outto other peg.ebnf defined parsers. The result of " +"Rules can call out to other peg.ebnf defined parsers. The result of " "the foreign call then becomes the AST of the successful parse. Foreign rules " "are invoked using '' or ''. The " "latter allows calling a specific rule in a previously designed peg.ebnf parser. " From 08bf39c5d145cd6fbbc573abed7c7e0d62803537 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Fri, 21 Jan 2011 16:13:38 +0900 Subject: [PATCH 07/20] disjoint-sets: fix typo in description of assoc>disjoint-set word --- basis/disjoint-sets/disjoint-sets-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/disjoint-sets/disjoint-sets-docs.factor b/basis/disjoint-sets/disjoint-sets-docs.factor index 73de932a30..589f99f6dc 100644 --- a/basis/disjoint-sets/disjoint-sets-docs.factor +++ b/basis/disjoint-sets/disjoint-sets-docs.factor @@ -23,7 +23,7 @@ HELP: equate HELP: assoc>disjoint-set { $values { "assoc" assoc } { "disjoint-set" disjoint-set } } -{ $description "Given an assoc representation of a graph where the keys are vertices and key/value pairs are edges, creates a disjoint set whose elements are the keys of assoc, and two keys are equvalent if they belong to the same connected component of the graph." } +{ $description "Given an assoc representation of a graph where the keys are vertices and key/value pairs are edges, creates a disjoint set whose elements are the keys of assoc, and two keys are equivalent if they belong to the same connected component of the graph." } { $examples { $example "USING: disjoint-sets kernel prettyprint ;" From 2a6e6517a0d0fdd2cdf9ffe0ced87306a8789483 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Sun, 23 Jan 2011 21:51:52 +0900 Subject: [PATCH 08/20] effects: add missing right parenthesis in description of stack-effect word --- core/effects/effects-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/effects/effects-docs.factor b/core/effects/effects-docs.factor index 44d216f872..7cd21a004e 100644 --- a/core/effects/effects-docs.factor +++ b/core/effects/effects-docs.factor @@ -143,4 +143,4 @@ HELP: effect>string HELP: stack-effect { $values { "word" word } { "effect/f" { $maybe effect } } } -{ $description "Outputs the stack effect of a word; either a stack effect declared with " { $link POSTPONE: ( } ", or an inferred stack effect (see " { $link "inference" } "." } ; +{ $description "Outputs the stack effect of a word; either a stack effect declared with " { $link POSTPONE: ( } ", or an inferred stack effect (see " { $link "inference" } ")." } ; From c04fbe892d9fae33db4c0d118c91fb340881cf76 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Sun, 23 Jan 2011 21:56:19 +0900 Subject: [PATCH 09/20] stack-checker: add a sample output in the last example of inference-recursive-combinators article --- basis/stack-checker/stack-checker-docs.factor | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/basis/stack-checker/stack-checker-docs.factor b/basis/stack-checker/stack-checker-docs.factor index 4fa66f7f38..6b3bdd354f 100644 --- a/basis/stack-checker/stack-checker-docs.factor +++ b/basis/stack-checker/stack-checker-docs.factor @@ -91,9 +91,10 @@ $nl "However a small change can be made:" { $example ": good ( ? quot: ( ? -- ) -- ) [ good ] 2keep [ not ] dip call ; inline recursive" "[ [ drop ] good ] infer." "( x -- )" } "An inline recursive word must have a fixed stack effect in its base case. The following will not infer:" -{ $code +{ $example ": foo ( quot ? -- ) [ f foo ] [ call ] if ; inline" "[ [ 5 ] t foo ] infer." + "The inline recursive word “foo” must be declared recursive\nword foo" } ; ARTICLE: "tools.inference" "Stack effect tools" From 629ea1163ba86d2dbdd6ef86a3261017472b4385 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Mon, 24 Jan 2011 04:00:17 +0900 Subject: [PATCH 10/20] memoize: correct documentation for MEMO: syntax --- basis/memoize/memoize-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/memoize/memoize-docs.factor b/basis/memoize/memoize-docs.factor index 58ba60af7c..2fc7f6c260 100644 --- a/basis/memoize/memoize-docs.factor +++ b/basis/memoize/memoize-docs.factor @@ -22,7 +22,7 @@ HELP: define-memoized { $description "Defines the given word at run time as one which memoizes its outputs given a particular input." } ; HELP: MEMO: -{ $syntax "MEMO: word ( stack -- effect ) definition ;" } +{ $syntax "MEMO: word ( stack -- effect ) definition... ;" } { $description "Defines the given word at parse time as one which memoizes its output given a particular input. The stack effect is mandatory." } ; { define-memoized POSTPONE: MEMO: } related-words From 334d0de92ad1db218800b5e2e380a252d656c765 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Wed, 26 Jan 2011 15:06:35 +0900 Subject: [PATCH 11/20] sequences: surround a $example with a $examples to the if-empty word's help --- core/sequences/sequences-docs.factor | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index ea3e4cf4d3..22e1eede41 100644 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -83,10 +83,12 @@ HELP: empty? HELP: if-empty { $values { "seq" sequence } { "quot1" quotation } { "quot2" quotation } } { $description "Makes an implicit check if the sequence is empty. An empty sequence is dropped and " { $snippet "quot1" } " is called. Otherwise, if the sequence has any elements, " { $snippet "quot2" } " is called on it." } -{ $example - "USING: kernel prettyprint sequences ;" - "{ 1 2 3 } [ \"empty sequence\" ] [ sum ] if-empty ." - "6" +{ $examples + { $example + "USING: kernel prettyprint sequences ;" + "{ 1 2 3 } [ \"empty sequence\" ] [ sum ] if-empty ." + "6" + } } ; HELP: when-empty From 187710a7b7abb9558135c8b82d19eabd747d7ee7 Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Wed, 26 Jan 2011 18:53:12 +0900 Subject: [PATCH 12/20] memoize: add description of arguments and values to MEMO: syntax in docs --- basis/memoize/memoize-docs.factor | 1 + 1 file changed, 1 insertion(+) diff --git a/basis/memoize/memoize-docs.factor b/basis/memoize/memoize-docs.factor index 2fc7f6c260..426bd2916c 100644 --- a/basis/memoize/memoize-docs.factor +++ b/basis/memoize/memoize-docs.factor @@ -23,6 +23,7 @@ HELP: define-memoized HELP: MEMO: { $syntax "MEMO: word ( stack -- effect ) definition... ;" } +{ $values { "word" "a new word to define" } { "definition" "a word definition" } } { $description "Defines the given word at parse time as one which memoizes its output given a particular input. The stack effect is mandatory." } ; { define-memoized POSTPONE: MEMO: } related-words From a2ad751f83e2fe26b313682266f84397632f077f Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Wed, 26 Jan 2011 21:26:12 +0900 Subject: [PATCH 13/20] classes.tuple: minor fix to $errors section in the boa word's help page --- core/classes/tuple/tuple-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/classes/tuple/tuple-docs.factor b/core/classes/tuple/tuple-docs.factor index 7443e02cc5..6de3ed2957 100644 --- a/core/classes/tuple/tuple-docs.factor +++ b/core/classes/tuple/tuple-docs.factor @@ -444,7 +444,7 @@ HELP: boa { $values { "slots..." "slot values" } { "class" tuple-class } { "tuple" tuple } } { $description "Creates a new instance of " { $snippet "class" } " and fill in the slots from the stack, with the top-most stack element being stored in the right-most slot." } { $notes "The name " { $snippet "boa" } " is shorthand for “by order of arguments”, and “BOA constructor” is a pun on “boa constrictor”." } -{ $errors "Throws an error if the slot values do not match class declarations on slots (see" { $link "tuple-declarations" } ")." } ; +{ $errors "Throws an error if the slot values do not match class declarations on slots (see " { $link "tuple-declarations" } ")." } ; HELP: bad-superclass { $error-description "Thrown if an attempt is made to subclass a class that is not a tuple class, or a tuple class declared " { $link POSTPONE: final } "." } ; From 48ec189c994ade00ff01fb7402d40f5d631d8c7e Mon Sep 17 00:00:00 2001 From: Keita Haga Date: Fri, 28 Jan 2011 11:48:07 +0900 Subject: [PATCH 14/20] xml.data: insert a space after a comma in description of contained class --- basis/xml/data/data-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/xml/data/data-docs.factor b/basis/xml/data/data-docs.factor index feb035d37a..97aa362c17 100644 --- a/basis/xml/data/data-docs.factor +++ b/basis/xml/data/data-docs.factor @@ -139,7 +139,7 @@ HELP: closer { $class-description "Describes a closing tag, like " { $snippet "" } ". Contains one slot, " { $snippet "name" } ", containing the closer's name." } ; HELP: contained -{ $class-description "Represents a self-closing tag, like " { $snippet "" } ". Contains two slots," { $snippet "name" } " and " { $snippet "attrs" } " containing, respectively, the name of the tag and its attributes." } ; +{ $class-description "Represents a self-closing tag, like " { $snippet "" } ". Contains two slots, " { $snippet "name" } " and " { $snippet "attrs" } " containing, respectively, the name of the tag and its attributes." } ; { opener closer contained } related-words From 0b52600143d0835f2048943152b93bdf8023b83a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 28 Jan 2011 22:56:46 -0500 Subject: [PATCH 15/20] sets: document combine word --- core/sets/sets-docs.factor | 4 ++++ core/sets/sets.factor | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/sets/sets-docs.factor b/core/sets/sets-docs.factor index 5197e57ad0..33c7e6a27a 100644 --- a/core/sets/sets-docs.factor +++ b/core/sets/sets-docs.factor @@ -190,3 +190,7 @@ HELP: null? HELP: cardinality { $values { "set" set } { "n" "a non-negative integer" } } { $description "Returns the number of elements in the set. All sets support this operation." } ; + +HELP: combine +{ $values { "seq" "a sequence of sets" } { "set" set } } +{ $description "Outputs the union of a sequence of sets, or " { $link f } " if the sequence is empty." } ; diff --git a/core/sets/sets.factor b/core/sets/sets.factor index 5dcee675f9..06f6e04655 100644 --- a/core/sets/sets.factor +++ b/core/sets/sets.factor @@ -109,7 +109,7 @@ M: sequence null? M: sequence cardinality length ; -: combine ( sets -- set/f ) +: combine ( sets -- set ) [ f ] [ [ [ members ] map concat ] [ first ] bi set-like ] if-empty ; From 61474602251eaa51abba57fcc264b0b73012272f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 29 Jan 2011 00:07:08 -0500 Subject: [PATCH 16/20] sets: fix help lint --- core/sets/sets-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/sets/sets-docs.factor b/core/sets/sets-docs.factor index 33c7e6a27a..220de91942 100644 --- a/core/sets/sets-docs.factor +++ b/core/sets/sets-docs.factor @@ -192,5 +192,5 @@ HELP: cardinality { $description "Returns the number of elements in the set. All sets support this operation." } ; HELP: combine -{ $values { "seq" "a sequence of sets" } { "set" set } } +{ $values { "sets" "a sequence of sets" } { "set" set } } { $description "Outputs the union of a sequence of sets, or " { $link f } " if the sequence is empty." } ; From d93117c60dc4e56b7d626959643f413f8c69ab9c Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 29 Jan 2011 00:07:22 -0500 Subject: [PATCH 17/20] tools.deploy: add XML deploy test --- basis/tools/deploy/deploy-tests.factor | 7 +++++++ basis/tools/deploy/test/20/20.factor | 10 ++++++++++ basis/tools/deploy/test/20/deploy.factor | 14 ++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 basis/tools/deploy/test/20/20.factor create mode 100644 basis/tools/deploy/test/20/deploy.factor diff --git a/basis/tools/deploy/deploy-tests.factor b/basis/tools/deploy/deploy-tests.factor index 1da32f3f42..0d0dba325f 100644 --- a/basis/tools/deploy/deploy-tests.factor +++ b/basis/tools/deploy/deploy-tests.factor @@ -135,4 +135,11 @@ os macosx? [ [ ] [ "tools.deploy.test.19" shake-and-bake run-temp-image ] unit-test +[ ] [ "tools.deploy.test.20" shake-and-bake ] unit-test + +[ "Factor\n" ] +[ deploy-test-command ascii [ contents ] with-process-reader ] unit-test + +[ ] [ 800000 small-enough? ] unit-test + [ ] [ "benchmark.ui-panes" shake-and-bake run-temp-image ] unit-test diff --git a/basis/tools/deploy/test/20/20.factor b/basis/tools/deploy/test/20/20.factor new file mode 100644 index 0000000000..7e9a0631b7 --- /dev/null +++ b/basis/tools/deploy/test/20/20.factor @@ -0,0 +1,10 @@ +USING: io xml.syntax xml.writer ; +IN: tools.deploy.test.20 + +: test-xml ( str -- str' ) + <-> XML> xml>string ; + +: main ( -- ) + "Factor" test-xml print ; + +MAIN: main diff --git a/basis/tools/deploy/test/20/deploy.factor b/basis/tools/deploy/test/20/deploy.factor new file mode 100644 index 0000000000..90487ad6fa --- /dev/null +++ b/basis/tools/deploy/test/20/deploy.factor @@ -0,0 +1,14 @@ +USING: tools.deploy.config ; +H{ + { deploy-name "tools.deploy.test.20" } + { deploy-ui? f } + { deploy-c-types? f } + { deploy-console? t } + { deploy-unicode? f } + { deploy-io 2 } + { deploy-reflection 1 } + { deploy-word-props? f } + { deploy-math? f } + { deploy-threads? f } + { deploy-word-defs? f } +} From e837ebee8156af97764a7b6af77bcdc1080e60c8 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 29 Jan 2011 00:07:56 -0500 Subject: [PATCH 18/20] xml.traversal: remove unused dependency on debugger --- basis/xml/traversal/traversal.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/xml/traversal/traversal.factor b/basis/xml/traversal/traversal.factor index c1c4ba670b..6342f96e42 100644 --- a/basis/xml/traversal/traversal.factor +++ b/basis/xml/traversal/traversal.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2009 Daniel Ehrenberg ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel namespaces sequences words io assocs -quotations strings parser lexer arrays xml.data xml.writer debugger +quotations strings parser lexer arrays xml.data xml.writer splitting vectors sequences.deep combinators fry memoize ; IN: xml.traversal From 09848ab42015145f0ed4650f82bddabf123ac9bb Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 29 Jan 2011 00:09:09 -0500 Subject: [PATCH 19/20] xml.errors: split off xml.errors.debugger so that deployed apps that use XML are ~100kb smaller --- basis/xml/errors/debugger/authors.txt | 1 + basis/xml/errors/debugger/debugger.factor | 150 +++++++++++++++++ basis/xml/errors/errors.factor | 195 ++-------------------- 3 files changed, 163 insertions(+), 183 deletions(-) create mode 100644 basis/xml/errors/debugger/authors.txt create mode 100644 basis/xml/errors/debugger/debugger.factor diff --git a/basis/xml/errors/debugger/authors.txt b/basis/xml/errors/debugger/authors.txt new file mode 100644 index 0000000000..f990dd0ed2 --- /dev/null +++ b/basis/xml/errors/debugger/authors.txt @@ -0,0 +1 @@ +Daniel Ehrenberg diff --git a/basis/xml/errors/debugger/debugger.factor b/basis/xml/errors/debugger/debugger.factor new file mode 100644 index 0000000000..01d0a9268a --- /dev/null +++ b/basis/xml/errors/debugger/debugger.factor @@ -0,0 +1,150 @@ +! Copyright (C) 2005, 2006 Daniel Ehrenberg +! See http://factorcode.org/license.txt for BSD license. +USING: accessors debugger io kernel prettyprint sequences +xml.errors xml.writer ; +IN: xml.errors.debugger + +M: xml-error-at error. + "XML parsing error" print + "Line: " write dup line>> . + "Column: " write column>> . ; + +M: expected error. + dup call-next-method + "Token expected: " write dup should-be>> print + "Token present: " write was>> print ; + +M: unexpected-end error. + call-next-method + "File unexpectedly ended." print ; + +M: missing-close error. + call-next-method + "Missing closing token." print ; + +M: disallowed-char error. + dup call-next-method + "Disallowed character in XML document: " write + char>> write1 nl ; + +M: multitags error. + drop "XML document contains multiple main tags" print ; + +M: pre/post-content error. + "The text string:" print + dup string>> . + "was used " write + pre?>> "before" "after" ? write + " the main tag." print ; + +M: no-entity error. + dup call-next-method + "Entity does not exist: &" write thing>> write ";" print ; + +M: mismatched error. + dup call-next-method + "Mismatched tags" print + "Opening tag: <" write dup open>> print-name ">" print + "Closing tag: > print-name ">" print ; + +M: unclosed error. + dup call-next-method + "Unclosed tags" print + "Tags: " print + tags>> [ " <" write print-name ">" print ] each ; + +M: bad-uri error. + dup call-next-method + "Bad URI:" print string>> . ; + +M: nonexist-ns error. + dup call-next-method + "Namespace " write name>> write " has not been declared" print ; + +M: unopened error. + call-next-method + "Closed an unopened tag" print ; + +M: not-yes/no error. + dup call-next-method + "standalone must be either yes or no, not \"" write + text>> write "\"." print ; + +M: extra-attrs error. + dup call-next-method + "Extra attributes included in xml version declaration:" print + attrs>> . ; + +M: bad-version error. + "XML version must be \"1.0\" or \"1.1\". Version here was " write + num>> . ; + +M: notags error. + drop "XML document lacks a main tag" print ; + +M: bad-prolog error. + dup call-next-method + "Misplaced XML prolog" print + prolog>> write-xml nl ; + +M: capitalized-prolog error. + dup call-next-method + "XML prolog name was partially or totally capitalized, using" print + "> write "...?>" write + " instead of " print ; + +M: versionless-prolog error. + call-next-method + "XML prolog lacks a version declaration" print ; + +M: bad-directive error. + dup call-next-method + "Unknown directive:" print + dir>> print ; + +M: bad-decl error. + call-next-method "Extra content in directive" print ; + +M: bad-external-id error. + call-next-method "Bad external ID" print ; + +M: misplaced-directive error. + dup call-next-method + "Misplaced directive:" print + dir>> write-xml nl ; + +M: bad-name error. + dup call-next-method + "Invalid name: " write name>> print ; + +M: unclosed-quote error. + call-next-method + "XML document ends with quote still open" print ; + +M: quoteless-attr error. + call-next-method "Attribute lacks quotes around value" print ; + +M: attr-w/< error. + call-next-method + "Attribute value contains literal <" print ; + +M: text-w/]]> error. + call-next-method + "Text node contains ']]>'" print ; + +M: duplicate-attr error. + call-next-method "Duplicate attribute" print ; + +M: bad-cdata error. + call-next-method "CDATA occurs before or after main tag" print ; + +M: not-enough-characters error. + call-next-method + "Not enough characters" print ; + +M: bad-doctype error. + call-next-method "DTD contains invalid object" print ; + +M: bad-encoding error. + call-next-method + "Encoding in XML document does not exist" print ; diff --git a/basis/xml/errors/errors.factor b/basis/xml/errors/errors.factor index 7be7e074c3..bd79f480f8 100644 --- a/basis/xml/errors/errors.factor +++ b/basis/xml/errors/errors.factor @@ -1,8 +1,7 @@ ! Copyright (C) 2005, 2006 Daniel Ehrenberg ! See http://factorcode.org/license.txt for BSD license. -USING: xml.data xml.writer kernel generic io prettyprint math -debugger sequences xml.state accessors summary -namespaces io.streams.string ; +USING: accessors kernel namespaces sequences vocabs.loader +xml.state ; IN: xml.errors TUPLE: xml-error-at line column ; @@ -11,91 +10,41 @@ TUPLE: xml-error-at line column ; new get-line >>line get-column >>column ; -M: xml-error-at summary ( obj -- str ) - [ - "XML parsing error" print - "Line: " write dup line>> . - "Column: " write column>> . - ] with-string-writer ; TUPLE: expected < xml-error-at should-be was ; + : expected ( should-be was -- * ) \ expected xml-error-at swap >>was swap >>should-be throw ; -M: expected summary ( obj -- str ) - [ - dup call-next-method write - "Token expected: " write dup should-be>> print - "Token present: " write was>> print - ] with-string-writer ; TUPLE: unexpected-end < xml-error-at ; + : unexpected-end ( -- * ) \ unexpected-end xml-error-at throw ; -M: unexpected-end summary ( obj -- str ) - [ - call-next-method write - "File unexpectedly ended." print - ] with-string-writer ; TUPLE: missing-close < xml-error-at ; + : missing-close ( -- * ) \ missing-close xml-error-at throw ; -M: missing-close summary ( obj -- str ) - [ - call-next-method write - "Missing closing token." print - ] with-string-writer ; TUPLE: disallowed-char < xml-error-at char ; : disallowed-char ( char -- * ) \ disallowed-char xml-error-at swap >>char throw ; -M: disallowed-char summary - [ call-next-method ] - [ char>> "Disallowed character in XML document: " swap suffix ] bi - append ; - ERROR: multitags ; -M: multitags summary ( obj -- str ) - drop "XML document contains multiple main tags" ; - ERROR: pre/post-content string pre? ; -M: pre/post-content summary ( obj -- str ) - [ - "The text string:" print - dup string>> . - "was used " write - pre?>> "before" "after" ? write - " the main tag." print - ] with-string-writer ; - TUPLE: no-entity < xml-error-at thing ; : no-entity ( string -- * ) \ no-entity xml-error-at swap >>thing throw ; -M: no-entity summary ( obj -- str ) - [ - dup call-next-method write - "Entity does not exist: &" write thing>> write ";" print - ] with-string-writer ; - TUPLE: mismatched < xml-error-at open close ; : mismatched ( open close -- * ) \ mismatched xml-error-at swap >>close swap >>open throw ; -M: mismatched summary ( obj -- str ) - [ - dup call-next-method write - "Mismatched tags" print - "Opening tag: <" write dup open>> print-name ">" print - "Closing tag: > print-name ">" print - ] with-string-writer ; - TUPLE: unclosed < xml-error-at tags ; : unclosed ( -- * ) @@ -103,249 +52,129 @@ TUPLE: unclosed < xml-error-at tags ; xml-stack get rest-slice [ first name>> ] map >>tags throw ; -M: unclosed summary ( obj -- str ) - [ - dup call-next-method write - "Unclosed tags" print - "Tags: " print - tags>> [ " <" write print-name ">" print ] each - ] with-string-writer ; - TUPLE: bad-uri < xml-error-at string ; : bad-uri ( string -- * ) \ bad-uri xml-error-at swap >>string throw ; -M: bad-uri summary ( obj -- str ) - [ - dup call-next-method write - "Bad URI:" print string>> . - ] with-string-writer ; - TUPLE: nonexist-ns < xml-error-at name ; : nonexist-ns ( name-string -- * ) \ nonexist-ns xml-error-at swap >>name throw ; -M: nonexist-ns summary ( obj -- str ) - [ - dup call-next-method write - "Namespace " write name>> write " has not been declared" print - ] with-string-writer ; - -TUPLE: unopened < xml-error-at ; ! this should give which tag was unopened +! this should give which tag was unopened +TUPLE: unopened < xml-error-at ; : unopened ( -- * ) \ unopened xml-error-at throw ; -M: unopened summary ( obj -- str ) - [ - call-next-method write - "Closed an unopened tag" print - ] with-string-writer ; - TUPLE: not-yes/no < xml-error-at text ; : not-yes/no ( text -- * ) \ not-yes/no xml-error-at swap >>text throw ; -M: not-yes/no summary ( obj -- str ) - [ - dup call-next-method write - "standalone must be either yes or no, not \"" write - text>> write "\"." print - ] with-string-writer ; - ! this should actually print the names TUPLE: extra-attrs < xml-error-at attrs ; : extra-attrs ( attrs -- * ) \ extra-attrs xml-error-at swap >>attrs throw ; -M: extra-attrs summary ( obj -- str ) - [ - dup call-next-method write - "Extra attributes included in xml version declaration:" print - attrs>> . - ] with-string-writer ; - TUPLE: bad-version < xml-error-at num ; : bad-version ( num -- * ) \ bad-version xml-error-at swap >>num throw ; -M: bad-version summary ( obj -- str ) - [ - "XML version must be \"1.0\" or \"1.1\". Version here was " write - num>> . - ] with-string-writer ; - ERROR: notags ; -M: notags summary ( obj -- str ) - drop "XML document lacks a main tag" ; - TUPLE: bad-prolog < xml-error-at prolog ; : bad-prolog ( prolog -- * ) \ bad-prolog xml-error-at swap >>prolog throw ; -M: bad-prolog summary ( obj -- str ) - [ - dup call-next-method write - "Misplaced XML prolog" print - prolog>> write-xml nl - ] with-string-writer ; - TUPLE: capitalized-prolog < xml-error-at name ; : capitalized-prolog ( name -- capitalized-prolog ) \ capitalized-prolog xml-error-at swap >>name throw ; -M: capitalized-prolog summary ( obj -- str ) - [ - dup call-next-method write - "XML prolog name was partially or totally capitalized, using" print - "> write "...?>" write - " instead of " print - ] with-string-writer ; - TUPLE: versionless-prolog < xml-error-at ; : versionless-prolog ( -- * ) \ versionless-prolog xml-error-at throw ; -M: versionless-prolog summary ( obj -- str ) - [ - call-next-method write - "XML prolog lacks a version declaration" print - ] with-string-writer ; - TUPLE: bad-directive < xml-error-at dir ; : bad-directive ( directive -- * ) \ bad-directive xml-error-at swap >>dir throw ; -M: bad-directive summary ( obj -- str ) - [ - dup call-next-method write - "Unknown directive:" print - dir>> write - ] with-string-writer ; - TUPLE: bad-decl < xml-error-at ; : bad-decl ( -- * ) \ bad-decl xml-error-at throw ; -M: bad-decl summary ( obj -- str ) - call-next-method "\nExtra content in directive" append ; - TUPLE: bad-external-id < xml-error-at ; : bad-external-id ( -- * ) \ bad-external-id xml-error-at throw ; -M: bad-external-id summary ( obj -- str ) - call-next-method "\nBad external ID" append ; - TUPLE: misplaced-directive < xml-error-at dir ; : misplaced-directive ( directive -- * ) \ misplaced-directive xml-error-at swap >>dir throw ; -M: misplaced-directive summary ( obj -- str ) - [ - dup call-next-method write - "Misplaced directive:" print - dir>> write-xml nl - ] with-string-writer ; - TUPLE: bad-name < xml-error-at name ; : bad-name ( name -- * ) \ bad-name xml-error-at swap >>name throw ; -M: bad-name summary ( obj -- str ) - [ call-next-method ] - [ "Invalid name: " swap name>> "\n" 3append ] - bi append ; - TUPLE: unclosed-quote < xml-error-at ; : unclosed-quote ( -- * ) \ unclosed-quote xml-error-at throw ; -M: unclosed-quote summary - call-next-method - "XML document ends with quote still open\n" append ; - TUPLE: quoteless-attr < xml-error-at ; : quoteless-attr ( -- * ) \ quoteless-attr xml-error-at throw ; -M: quoteless-attr summary - call-next-method "Attribute lacks quotes around value\n" append ; - TUPLE: attr-w/< < xml-error-at ; : attr-w/< ( -- * ) \ attr-w/< xml-error-at throw ; -M: attr-w/< summary - call-next-method - "Attribute value contains literal <" append ; - TUPLE: text-w/]]> < xml-error-at ; : text-w/]]> ( -- * ) \ text-w/]]> xml-error-at throw ; -M: text-w/]]> summary - call-next-method - "Text node contains ']]>'" append ; - TUPLE: duplicate-attr < xml-error-at key values ; : duplicate-attr ( key values -- * ) \ duplicate-attr xml-error-at swap >>values swap >>key throw ; -M: duplicate-attr summary - call-next-method "\nDuplicate attribute" append ; - TUPLE: bad-cdata < xml-error-at ; : bad-cdata ( -- * ) \ bad-cdata xml-error-at throw ; -M: bad-cdata summary - call-next-method "\nCDATA occurs before or after main tag" append ; - TUPLE: not-enough-characters < xml-error-at ; + : not-enough-characters ( -- * ) \ not-enough-characters xml-error-at throw ; -M: not-enough-characters summary ( obj -- str ) - [ - call-next-method write - "Not enough characters" print - ] with-string-writer ; TUPLE: bad-doctype < xml-error-at contents ; + : bad-doctype ( contents -- * ) \ bad-doctype xml-error-at swap >>contents throw ; -M: bad-doctype summary - call-next-method "\nDTD contains invalid object" append ; TUPLE: bad-encoding < xml-error-at encoding ; + : bad-encoding ( encoding -- * ) \ bad-encoding xml-error-at swap >>encoding throw ; -M: bad-encoding summary - call-next-method - "\nEncoding in XML document does not exist" append ; UNION: xml-error multitags notags pre/post-content xml-error-at ; + +{ "xml.errors" "debugger" } "xml.errors.debugger" require-when From c2aca44b4a9c12c0b4f1a25c83f889b93af92828 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 29 Jan 2011 00:18:36 -0500 Subject: [PATCH 20/20] sequences: nths should return a sequence of the same type as the original (reported by Jon Harper) --- core/sequences/sequences-tests.factor | 2 ++ core/sequences/sequences.factor | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/sequences/sequences-tests.factor b/core/sequences/sequences-tests.factor index 175ab252e1..586e312edb 100644 --- a/core/sequences/sequences-tests.factor +++ b/core/sequences/sequences-tests.factor @@ -255,6 +255,8 @@ unit-test [ { "a" "b" "c" "d" } ] [ { 0 1 2 3 } { "a" "b" "c" "d" } nths ] unit-test [ { "d" "c" "b" "a" } ] [ { 3 2 1 0 } { "a" "b" "c" "d" } nths ] unit-test [ { "d" "a" "b" "c" } ] [ { 3 0 1 2 } { "a" "b" "c" "d" } nths ] unit-test + +[ "dac" ] [ { 3 0 2 } "abcd" nths ] unit-test TUPLE: bogus-hashcode ; diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 55398ff02b..493365db1a 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2005, 2010 Slava Pestov, Daniel Ehrenberg. +! Copyright (C) 2005, 2011 Slava Pestov, Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel kernel.private slots.private math math.private math.order ; @@ -559,7 +559,7 @@ PRIVATE> [ [ (indices) ] 2curry each-index ] keep ; : nths ( indices seq -- seq' ) - [ nth ] curry map ; + [ [ nth ] curry ] keep map-as ; : any? ( ... seq quot: ( ... elt -- ... ? ) -- ... ? ) find drop >boolean ; inline