graphviz.dot: fix escaping logic
It used escape the escape char \, but it shouldn't do that because it leads to double escaping.db4
parent
3bf7e49e9f
commit
df93e4533d
|
@ -0,0 +1,21 @@
|
|||
USING: graphviz.dot.private io.streams.string sequences tools.test ;
|
||||
IN: graphviz.dot.tests
|
||||
|
||||
! Making sure strings are escaped properly
|
||||
{
|
||||
{
|
||||
"\"BAH\" "
|
||||
"\"LINE1\\nLINE2\" "
|
||||
"\"\\lLINE1\\lLINE2\" "
|
||||
"\"hum\\\"ho\\\"\" "
|
||||
}
|
||||
} [
|
||||
{
|
||||
"BAH"
|
||||
"LINE1\\nLINE2"
|
||||
"\\lLINE1\\lLINE2"
|
||||
"hum\"ho\""
|
||||
} [
|
||||
[ dot. ] with-string-writer
|
||||
] map
|
||||
] unit-test
|
|
@ -1,8 +1,8 @@
|
|||
! Copyright (C) 2012 Alex Vondrak.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors classes classes.tuple combinators formatting graphviz
|
||||
graphviz.attributes io io.files kernel namespaces prettyprint.backend
|
||||
sequences splitting strings words ;
|
||||
graphviz.attributes io io.files kernel namespaces sequences splitting
|
||||
strings words ;
|
||||
IN: graphviz.dot
|
||||
|
||||
<PRIVATE
|
||||
|
@ -14,8 +14,12 @@ GENERIC: dot. ( obj -- )
|
|||
! option in case there's a keyword clash, spaces in the ID,
|
||||
! etc. This does mean that HTML labels aren't supported, but
|
||||
! they don't seem to work using the Graphviz API anyway.
|
||||
!
|
||||
! Special escaping logic is required here because of the \l escape
|
||||
! sequence.
|
||||
: quote-string ( str -- str' )
|
||||
"\"" "\"" unparse-string "\0" split "" join ;
|
||||
{ { "\"" "\\\"" } { "\0" "" } } [ first2 replace ] each
|
||||
"\"" "\"" surround ;
|
||||
|
||||
M: string dot. quote-string "%s " printf ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue