Better regexp to quote-wrap words in stemma dot. Fixes #19, again.
tla [Wed, 14 Aug 2013 12:40:01 +0000 (14:40 +0200)]
lib/stemmaweb/Controller/Root.pm

index f2488ad..51d7dff 100644 (file)
@@ -352,10 +352,10 @@ sub stemma :Local :Args(2) {
                if( $ok eq 'full' ) {
                        my $dot = $c->request->body_params->{'dot'};
                        # Graph::Reader::Dot does not handle bare unicode. We get around this
-                       # by wrapping all words in double quotes, but then we have to undo it
-                       # for the initial 'digraph stemma' statement. Horrible hack.
-                       $dot =~ s/\b(\w+)\b/"$1"/g;
-                       $dot =~ s/"(digraph|stemma)"/$1/g;
+                       # by wrapping all words in double quotes, as long as they aren't already
+                       # wrapped, and as long as they aren't the initial 'digraph stemma'.
+                       # Horrible HACK.
+                       $dot =~ s/(?<!")\b(?!(?:digraph|stemma)\b)(\w+)\b(?!")/"$1"/g;
                        try {
                                if( $stemmaid eq 'n' ) {
                                        # We are adding a new stemma.