: empty-name? ( string -- ? )
{ "''" "\"\"" "" f } member? ;
+: quote? ( ch -- ? ) "'\"" member? ;
+
+: quoted? ( str -- ? )
+ {
+ [ length 1 > ]
+ [ first quote? ]
+ [ [ first ] [ peek ] bi = ]
+ } 1&& ;
+
+: unquote ( str -- newstr )
+ dup quoted? [ but-last-slice rest-slice >string ] when ;
+
: save-uploaded-file ( multipart -- )
dup filename>> empty-name? [
drop
+++ /dev/null
-Doug Coleman
+++ /dev/null
-! Copyright (C) 2009 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: help.markup help.syntax strings ;
-IN: quoting
-
-HELP: quote?
-{ $values
- { "ch" "a character" }
- { "?" "a boolean" }
-}
-{ $description "Returns true if the character is a single or double quote." } ;
-
-HELP: quoted?
-{ $values
- { "str" string }
- { "?" "a boolean" }
-}
-{ $description "Returns true if a string is surrounded by matching single or double quotes as the first and last characters." } ;
-
-HELP: unquote
-{ $values
- { "str" string }
- { "newstr" string }
-}
-{ $description "Removes a pair of matching single or double quotes from a string." } ;
-
-ARTICLE: "quoting" "Quotation marks"
-"The " { $vocab-link "quoting" } " vocabulary is for removing quotes from a string." $nl
-"Removing quotes:"
-{ $subsection unquote } ;
-
-ABOUT: "quoting"
+++ /dev/null
-! Copyright (C) 2009 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: tools.test quoting ;
-IN: quoting.tests
-
-
-[ "abc" ] [ "'abc'" unquote ] unit-test
-[ "abc" ] [ "\"abc\"" unquote ] unit-test
-[ "'abc" ] [ "'abc" unquote ] unit-test
-[ "abc'" ] [ "abc'" unquote ] unit-test
+++ /dev/null
-! Copyright (C) 2009 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: combinators.short-circuit kernel math sequences strings ;
-IN: quoting
-
-: quote? ( ch -- ? ) "'\"" member? ;
-
-: quoted? ( str -- ? )
- {
- [ length 1 > ]
- [ first quote? ]
- [ [ first ] [ peek ] bi = ]
- } 1&& ;
-
-: unquote ( str -- newstr )
- dup quoted? [ but-last-slice rest-slice >string ] when ;