From b412cab5c70160e0810b3bd62b682597535dfa71 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 24 Mar 2013 17:29:48 -0700 Subject: [PATCH] peg.search: create a stream-tree-write. --- basis/peg/search/search.factor | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/basis/peg/search/search.factor b/basis/peg/search/search.factor index 52df09c2a1..4ad4a9c906 100644 --- a/basis/peg/search/search.factor +++ b/basis/peg/search/search.factor @@ -1,17 +1,20 @@ ! Copyright (C) 2006 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel math io io.streams.string sequences strings -combinators peg memoize arrays continuations ; +USING: combinators continuations io io.streams.string kernel +math memoize namespaces peg sequences strings ; IN: peg.search -: tree-write ( object -- ) +: stream-tree-write ( object stream -- ) { - { [ dup number? ] [ write1 ] } - { [ dup string? ] [ write ] } - { [ dup sequence? ] [ [ tree-write ] each ] } - { [ t ] [ write ] } + { [ over number? ] [ stream-write1 ] } + { [ over string? ] [ stream-write ] } + { [ over sequence? ] [ [ stream-tree-write ] curry each ] } + { [ t ] [ stream-write ] } } cond ; +: tree-write ( object -- ) + output-stream get stream-tree-write ; + MEMO: any-char-parser ( -- parser ) [ drop t ] satisfy ; @@ -23,6 +26,4 @@ MEMO: any-char-parser ( -- parser ) any-char-parser 2choice repeat0 parse sift ; : replace ( string parser -- result ) - [ (replace) [ tree-write ] each ] with-string-writer ; - - + [ (replace) tree-write ] with-string-writer ;