From 7640e616bb1bc6a5354df1ca0dcb69036ced0177 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Dec 2007 20:47:42 -0600 Subject: [PATCH 1/3] add define-form --- extra/furnace/furnace.factor | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/extra/furnace/furnace.factor b/extra/furnace/furnace.factor index 756fa13d1c..c63f107ff7 100644 --- a/extra/furnace/furnace.factor +++ b/extra/furnace/furnace.factor @@ -20,6 +20,13 @@ SYMBOL: template-path : define-action ( word params -- ) f define-authenticated-action ; +: code>quotation ( word/quot -- quot ) + dup word? [ 1quotation ] when ; + +: define-form ( formword actionword params -- ) + dupd define-action + swap code>quotation "form-quotation" set-word-prop ; + : define-redirect ( word quot -- ) "action-redirect" set-word-prop ; From d2163097f0aaddf0e1b922f974c5b59217b0f71a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 18 Dec 2007 02:37:06 -0600 Subject: [PATCH 2/3] Add cut-all, human-sort to sequences.lib --- extra/sequences/lib/lib.factor | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index f5adccf445..ba2fb055e2 100644 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -1,5 +1,6 @@ USING: combinators.lib kernel sequences math namespaces assocs random sequences.private shuffle math.functions mirrors ; +USING: arrays math.parser sorting strings ; IN: sequences.lib ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -104,3 +105,20 @@ PRIVATE> : power-set ( seq -- subsets ) 2 over length exact-number-strings swap [ nths ] curry map ; + +: cut-find ( seq pred -- before after ) + dupd find drop dup [ cut ] when ; + +: cut3 ( seq pred -- first mid last ) + [ cut-find ] keep [ not ] compose cut-find ; + +: (cut-all) ( seq pred quot -- ) + [ >r cut3 r> dip >r >r , r> [ , ] when* r> ] 2keep + pick [ (cut-all) ] [ 3drop ] if ; + +: cut-all ( seq pred quot -- first mid last ) + [ (cut-all) ] { } make ; + +: human-sort ( seq -- newseq ) + [ dup [ digit? ] [ string>number ] cut-all ] { } map>assoc + sort-values keys ; From 8aed4d6b26a597579c3007e0d4e0a5b17e69f94a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 18 Dec 2007 16:14:47 -0600 Subject: [PATCH 3/3] fix bootstrap (tag-matches? -> tag-named?) --- extra/xml/utilities/utilities.factor | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extra/xml/utilities/utilities.factor b/extra/xml/utilities/utilities.factor index 2ce4e2b3d3..a86b1c9214 100644 --- a/extra/xml/utilities/utilities.factor +++ b/extra/xml/utilities/utilities.factor @@ -120,18 +120,18 @@ M: xml xml-inject >r delegate >r xml-inject ; dup tag? [ names-match? ] [ 2drop f ] if ; : tag-named* ( tag name/string -- matching-tag ) - assure-name swap [ dupd tag-matches? ] xml-find nip ; + assure-name swap [ dupd tag-named? ] xml-find nip ; : tags-named* ( tag name/string -- tags-seq ) - assure-name swap [ dupd tag-matches? ] xml-subset nip ; + assure-name swap [ dupd tag-named? ] xml-subset nip ; : tag-named ( tag name/string -- matching-tag ) ! like get-name-tag but only looks at direct children, ! not all the children down the tree. - assure-name swap [ tag-matches? ] curry* find nip ; + assure-name swap [ tag-named? ] curry* find nip ; : tags-named ( tag name/string -- tags-seq ) - assure-name swap [ tag-matches? ] curry* subset ; + assure-name swap [ tag-named? ] curry* subset ; : assert-tag ( name name -- ) names-match? [ "Unexpected XML tag found" throw ] unless ;