mirror of https://github.com/django/django.git
Changed django.utils.text.smart_split to return strings, not tuples
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3111 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a88e0ec5c6
commit
0f0560a9ac
|
@ -111,11 +111,19 @@ def javascript_quote(s):
|
||||||
|
|
||||||
smart_split_re = re.compile('("(?:[^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'(?:[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'|[^\\s]+)')
|
smart_split_re = re.compile('("(?:[^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'(?:[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'|[^\\s]+)')
|
||||||
def smart_split(text):
|
def smart_split(text):
|
||||||
|
"""
|
||||||
|
Generator that splits a string by spaces, leaving quoted phrases together.
|
||||||
|
Supports both single and double quotes, and supports escaping quotes with
|
||||||
|
backslashes. In the output, strings will keep their initial and trailing
|
||||||
|
quote marks.
|
||||||
|
>>> list(smart_split('This is "a person\'s" test.'))
|
||||||
|
['This', 'is', '"a person\'s"', 'test.']
|
||||||
|
"""
|
||||||
for bit in smart_split_re.finditer(text):
|
for bit in smart_split_re.finditer(text):
|
||||||
bit = bit.group(0)
|
bit = bit.group(0)
|
||||||
if bit[0] == '"':
|
if bit[0] == '"':
|
||||||
yield (bit[1:-1].replace('\\"', '"').replace('\\\\', '\\'), True)
|
yield '"' + bit[1:-1].replace('\\"', '"').replace('\\\\', '\\') + '"'
|
||||||
elif bit[0] == "'":
|
elif bit[0] == "'":
|
||||||
yield (bit[1:-1].replace("\\'", "'").replace("\\\\", "\\"), True)
|
yield "'" + bit[1:-1].replace("\\'", "'").replace("\\\\", "\\") + "'"
|
||||||
else:
|
else:
|
||||||
yield (bit, False)
|
yield bit
|
||||||
|
|
Loading…
Reference in New Issue