notation3 parser error

hi,

n3 parser fail when a literal delimited with """ ends in " or "" as in
this cases:

:a :b """ some text "quoted text here"""" .

or

:a :b """ some text """"" .

I solved the problem changing the notation3.py. The patch is for the
current notation3.py from CVS and cwm 1.197 from cwm-1.2.1:

--- notation3.py.orig	2010-10-18 17:40:04.000000000 +0300
+++ notation3.py	2010-10-18 18:00:23.000000000 +0300
@@ -1048,14 +1048,28 @@
         ustr = u""   # Empty unicode string
         startline = self.lines # Remember where for error messages
         while j<len(str):
-            i = j + len(delim)
-            if str[j:i] == delim: # done.
-                return i, ustr
-
-            if str[j] == '"':
-                ustr = ustr + '"'
-                j = j + 1
-                continue
+                if delim == '"': # done when delim is "
+                    i = j + 1
+                    return i, ustr
+                if delim == '"""': # done when delim is """ and ...
+                    if str[j:j+5] == '"""""': # ... we have "" before
+                        i = j + 5
+                        ustr = ustr + '""'
+                        return i, ustr
+                    if str[j:j+4] == '""""': # ... we have " before
+                        i = j + 4
+                        ustr = ustr + '"'
+                        return i, ustr
+                    if str[j:j+3] == '"""': # ... current " is part of delim
+                        i = j + 3
+                        ustr = ustr + '"'
+                        return i, ustr
+
+                    # we are inside of the string and current char is "
+                    j = j + 1
+                    ustr = ustr + '"'
+                    continue
+                    
             m = interesting.search(str, j)  # was str[j:].
             # Note for pos param to work, MUST be compiled  ... re bug?
             assert m , "Quote expected in string at ^ in %s^%s" %(

Received on Monday, 18 October 2010 15:51:29 UTC