From: Doug Coleman Date: Sat, 27 Feb 2010 11:01:14 +0000 (-0600) Subject: Add a slots{ word for accessing multiple slots X-Git-Tag: 0.97~4791 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=90597236e1341a56c44438804ecfb21045dbb87a Add a slots{ word for accessing multiple slots --- diff --git a/extra/slots/syntax/authors.txt b/extra/slots/syntax/authors.txt new file mode 100755 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/slots/syntax/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/slots/syntax/syntax-docs.factor b/extra/slots/syntax/syntax-docs.factor new file mode 100755 index 0000000000..b79916f91b --- /dev/null +++ b/extra/slots/syntax/syntax-docs.factor @@ -0,0 +1,20 @@ +! Copyright (C) 2010 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax ; +IN: slots.syntax + +HELP: slots{ +{ $description "Outputs an array of slot values from a tuple." } +{ $example "USING: prettyprint slots.syntax ;" + "IN: slots.syntax.example" + "TUPLE: rectangle width height ;" + "T{ rectangle { width 3 } { height 5 } } slots{ width height } ." + "{ 3 5 }" +} ; + +ARTICLE: "slots.syntax" "Slots syntax sugar" +"The " { $vocab-link "slots.syntax" } " vocabulary provides an alternative syntax for taking a sequence of slots from a tuple." $nl +"Syntax sugar for cleaving slots to an array:" +{ $subsections POSTPONE: slots{ } ; + +ABOUT: "slots.syntax" diff --git a/extra/slots/syntax/syntax-tests.factor b/extra/slots/syntax/syntax-tests.factor new file mode 100755 index 0000000000..689ccb48eb --- /dev/null +++ b/extra/slots/syntax/syntax-tests.factor @@ -0,0 +1,10 @@ +! Copyright (C) 2010 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: tools.test slots.syntax ; +IN: slots.syntax.tests + +TUPLE: slot-test a b c ; + +[ { 1 2 3 } ] [ T{ slot-test f 1 2 3 } slots{ a b c } ] unit-test +[ { 3 } ] [ T{ slot-test f 1 2 3 } slots{ c } ] unit-test +[ { } ] [ T{ slot-test f 1 2 3 } slots{ } ] unit-test \ No newline at end of file diff --git a/extra/slots/syntax/syntax.factor b/extra/slots/syntax/syntax.factor new file mode 100755 index 0000000000..2cce91c569 --- /dev/null +++ b/extra/slots/syntax/syntax.factor @@ -0,0 +1,10 @@ +! Copyright (C) 2010 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: combinators combinators.smart fry lexer quotations +sequences slots ; +IN: slots.syntax + +SYNTAX: slots{ + "}" parse-tokens + [ reader-word 1quotation ] map + '[ [ _ cleave ] output>array ] append! ; \ No newline at end of file