Remove eval dependency from unicode.syntax
parent
97a91579bb
commit
a0e7663afb
|
@ -2,7 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: unicode.data kernel math sequences parser lexer
|
USING: unicode.data kernel math sequences parser lexer
|
||||||
bit-arrays namespaces make sequences.private arrays quotations
|
bit-arrays namespaces make sequences.private arrays quotations
|
||||||
assocs classes.predicate math.order eval ;
|
assocs classes.predicate math.order strings.parser ;
|
||||||
IN: unicode.syntax
|
IN: unicode.syntax
|
||||||
|
|
||||||
! Character classes (categories)
|
! Character classes (categories)
|
||||||
|
@ -26,7 +26,7 @@ IN: unicode.syntax
|
||||||
categories [ swap member? ] with map >bit-array ;
|
categories [ swap member? ] with map >bit-array ;
|
||||||
|
|
||||||
: as-string ( strings -- bit-array )
|
: as-string ( strings -- bit-array )
|
||||||
concat "\"" tuck 3append eval ;
|
concat unescape-string ;
|
||||||
|
|
||||||
: [category] ( categories -- quot )
|
: [category] ( categories -- quot )
|
||||||
[
|
[
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
IN: strings.parser.tests
|
||||||
|
USING: strings.parser tools.test ;
|
||||||
|
|
||||||
|
[ "Hello\n\rworld" ] [ "Hello\\n\\rworld" unescape-string ] unit-test
|
|
@ -58,3 +58,15 @@ name>char-hook global [
|
||||||
lexer get [
|
lexer get [
|
||||||
[ swap tail-slice (parse-string) ] "" make swap
|
[ swap tail-slice (parse-string) ] "" make swap
|
||||||
] change-lexer-column ;
|
] change-lexer-column ;
|
||||||
|
|
||||||
|
: (unescape-string) ( str -- str' )
|
||||||
|
dup [ CHAR: \\ = ] find [
|
||||||
|
cut-slice [ % ] dip rest-slice
|
||||||
|
next-escape [ , ] dip
|
||||||
|
(unescape-string)
|
||||||
|
] [
|
||||||
|
drop %
|
||||||
|
] if ;
|
||||||
|
|
||||||
|
: unescape-string ( str -- str' )
|
||||||
|
[ (unescape-string) ] "" make ;
|
||||||
|
|
Loading…
Reference in New Issue