--- lib/python/zope/structuredtext/document.py.orig Thu Nov 23 16:54:41 2006 +++ lib/python/zope/structuredtext/document.py Thu Nov 23 17:14:20 2006 @@ -556,7 +556,7 @@ def doc_literal( self, s, - expr = re.compile(r"(\W+|^)'([%s%s%s\s]+)'([%s]+|$)" % (letters, digits, literal_punc, phrase_delimiters)).search,): + expr = re.compile(r"(\W+|^)'((?:\w|[%s%s\s])+)'([%s]+|$)" % (digits, literal_punc, phrase_delimiters), re.U).search,): r = expr(s) if r: start, end = r.span(2) @@ -564,7 +564,8 @@ def doc_emphasize( self, s, - expr = re.compile(r'\*([%s%s%s\s]+?)\*' % (letters, digits, strongem_punc)).search + # i18nal variant + expr = re.compile(r'\*((?:\w|[%s\s])+?)\*' % (strongem_punc), re.U).search ): r=expr(s) @@ -605,7 +606,7 @@ def doc_underline(self, s, - expr=re.compile(r'_([%s%s%s\s]+)_([\s%s]|$)' % (letters, digits, under_punc,phrase_delimiters)).search): + expr=re.compile(r'_((?:\w|[%s\s])+)_([\s%s]|$)' % (under_punc,phrase_delimiters), re.U).search): result = expr(s) if result: @@ -617,7 +618,7 @@ def doc_strong(self, s, - expr = re.compile(r'\*\*([%s%s%s\s]+?)\*\*' % (letters, digits, strongem_punc)).search + expr = re.compile(r'\*\*((?:\w|[%s%s\s])+?)\*\*' % (digits, strongem_punc), re.U).search #expr = re.compile(r'\s*\*\*([ \n\r%s0-9.:/;,\'\"\?\-\_\/\=\-\>\<\(\)]+)\*\*(?!\*|-)' % letters).search, # old expr, inconsistent punc, failed to cross newlines. ): @@ -627,19 +628,19 @@ return (stng.StructuredTextStrong(s[start:end]), start-2, end+2) ## Some constants to make the doc_href() regex easier to read. - _DQUOTEDTEXT = r'("[ %s0-9\n\r%s]+")' % (letters,dbl_quoted_punc) ## double quoted text + _DQUOTEDTEXT = r'("[^"]+")' ## double quoted text _ABSOLUTE_URL=r'((http|https|ftp|mailto|file|about)[:/]+?[%s0-9_\@\.\,\?\!\/\:\;\-\#\~\=\&\%%\+]+)' % letters _ABS_AND_RELATIVE_URL=r'([%s0-9_\@\.\,\?\!\/\:\;\-\#\~\=\&\%%\+]+)' % letters _SPACES = r'(\s*)' def doc_href1(self, s, - expr=re.compile(_DQUOTEDTEXT + "(:)" + _ABS_AND_RELATIVE_URL + _SPACES).search + expr=re.compile(_DQUOTEDTEXT + "(:)" + _ABS_AND_RELATIVE_URL + _SPACES, re.U).search ): return self.doc_href(s, expr) def doc_href2(self, s, - expr=re.compile(_DQUOTEDTEXT + r'(\,\s+)' + _ABSOLUTE_URL + _SPACES).search + expr=re.compile(_DQUOTEDTEXT + r'(\,\s+)' + _ABSOLUTE_URL + _SPACES, re.U).search ): return self.doc_href(s, expr) @@ -693,7 +694,7 @@ def doc_img( self, s, - expr1=re.compile('\"([ _a-zA-Z0-9*.:/;,\[\]\'\-\n\~]+)\":img:([a-zA-Z0-9%\_\-.:/\?=;,\n\~]+)').search, + expr1=re.compile('\"((?:\w|[ *.:/;,\-\n\~])+)\":img:([a-zA-Z0-9\_\-.:/;,\n\~]+)', re.U).search, ): r=expr1(s) --- lib/python/zope/structuredtext/stng.py.orig Thu Nov 23 17:00:38 2006 +++ lib/python/zope/structuredtext/stng.py Thu Nov 23 17:02:45 2006 @@ -105,6 +105,9 @@ [paragraph,[sub-paragraphs]] """ + if type(paragraphs) == type(''): + paragraphs = unicode(paragraphs, 'utf-8') + currentlevel = 0 currentindent = 0 levels = {0:0}