Fixed #12119. Changed smart_split to stop splitting on whitespace in quotes. Thanks, emulbreh.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12581 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Joseph Kocherhans 2010-02-24 20:52:14 +00:00
parent 3304afa67a
commit c8cd8b80aa
2 changed files with 10 additions and 3 deletions

View File

@ -202,9 +202,14 @@ javascript_quote = allow_lazy(javascript_quote, unicode)
# Expression to match some_token and some_token="with spaces" (and similarly # Expression to match some_token and some_token="with spaces" (and similarly
# for single-quoted strings). # for single-quoted strings).
smart_split_re = re.compile(r""" smart_split_re = re.compile(r"""
([^\s"]*"(?:[^"\\]*(?:\\.[^"\\]*)*)"\S*| ((?:
[^\s']*'(?:[^'\\]*(?:\\.[^'\\]*)*)'\S*| [^\s'"]*
\S+)""", re.VERBOSE) (?:
(?:"(?:[^"\\]|\\.)*" | '(?:[^'\\]|\\.)*')
[^\s'"]*
)+
) | \S+)
""", re.VERBOSE)
def smart_split(text): def smart_split(text):
r""" r"""

View File

@ -27,6 +27,8 @@ friends'
[u'url', u'search_page', u'words=hello'] [u'url', u'search_page', u'words=hello']
>>> list(smart_split(u'url search_page words="something else')) >>> list(smart_split(u'url search_page words="something else'))
[u'url', u'search_page', u'words="something', u'else'] [u'url', u'search_page', u'words="something', u'else']
>>> list(smart_split("cut:','|cut:' '"))
[u"cut:','|cut:' '"]
### urlquote ############################################################# ### urlquote #############################################################
>>> from django.utils.http import urlquote, urlquote_plus >>> from django.utils.http import urlquote, urlquote_plus