From d64e07af8b2b3cd8243b8a4a818209215814e95f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 1 Apr 2009 15:23:05 -0500 Subject: [PATCH] fix bug in state-parser, add take-token --- extra/html/parser/state/state-tests.factor | 3 +++ extra/html/parser/state/state.factor | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/extra/html/parser/state/state-tests.factor b/extra/html/parser/state/state-tests.factor index 316fe31805..b7a929284b 100644 --- a/extra/html/parser/state/state-tests.factor +++ b/extra/html/parser/state/state-tests.factor @@ -79,3 +79,6 @@ IN: html.parser.state.tests [ CHAR: \ CHAR: " take-quoted-string drop ] [ "\"abc" take-sequence ] bi ] unit-test + +[ "c" ] +[ "c" take-token ] unit-test diff --git a/extra/html/parser/state/state.factor b/extra/html/parser/state/state.factor index 8a9084b91b..1b83089c98 100644 --- a/extra/html/parser/state/state.factor +++ b/extra/html/parser/state/state.factor @@ -36,7 +36,7 @@ TUPLE: state-parser sequence n ; state-parser quot call [ state-parser advance quot skip-until ] unless ] when ; inline recursive -: state-parse-end? ( state-parser -- ? ) peek-next not ; +: state-parse-end? ( state-parser -- ? ) current not ; : take-until ( state-parser quot: ( obj -- ? ) -- sequence/f ) over state-parse-end? [ @@ -96,3 +96,6 @@ TUPLE: state-parser sequence n ; ] [ start-n state-parser (>>n) f ] if ; + +: take-token ( state-parser -- string ) + skip-whitespace [ current { [ blank? ] [ f = ] } 1|| ] take-until ;