diff --git a/extra/method-chains/authors.txt b/extra/method-chains/authors.txt new file mode 100644 index 0000000000..d4f5d6b3ae --- /dev/null +++ b/extra/method-chains/authors.txt @@ -0,0 +1 @@ +Slava Pestov \ No newline at end of file diff --git a/extra/method-chains/method-chains-tests.factor b/extra/method-chains/method-chains-tests.factor new file mode 100644 index 0000000000..e1a18fa69f --- /dev/null +++ b/extra/method-chains/method-chains-tests.factor @@ -0,0 +1,13 @@ +IN: method-chains.tests +USING: method-chains tools.test arrays strings sequences kernel namespaces ; + +GENERIC: testing ( a b -- c ) + +M: sequence testing nip reverse ; +AFTER: string testing append ; +BEFORE: array testing over prefix "a" set ; + +[ V{ 3 2 1 } ] [ 3 V{ 1 2 3 } testing ] unit-test +[ "heyyeh" ] [ 4 "yeh" testing ] unit-test +[ { 4 2 0 } ] [ 5 { 0 2 4 } testing ] unit-test +[ { 5 0 2 4 } ] [ "a" get ] unit-test \ No newline at end of file diff --git a/extra/method-chains/method-chains.factor b/extra/method-chains/method-chains.factor new file mode 100644 index 0000000000..ae1801a8b5 --- /dev/null +++ b/extra/method-chains/method-chains.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2009 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel generic generic.parser words fry ; +IN: method-chains + +: AFTER: (M:) dupd '[ [ _ (call-next-method) ] _ bi ] define ; parsing +: BEFORE: (M:) over '[ _ [ _ (call-next-method) ] bi ] define ; parsing