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]+)')
|
||||
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):
|
||||
bit = bit.group(0)
|
||||
if bit[0] == '"':
|
||||
yield (bit[1:-1].replace('\\"', '"').replace('\\\\', '\\'), True)
|
||||
yield '"' + bit[1:-1].replace('\\"', '"').replace('\\\\', '\\') + '"'
|
||||
elif bit[0] == "'":
|
||||
yield (bit[1:-1].replace("\\'", "'").replace("\\\\", "\\"), True)
|
||||
yield "'" + bit[1:-1].replace("\\'", "'").replace("\\\\", "\\") + "'"
|
||||
else:
|
||||
yield (bit, False)
|
||||
yield bit
|
||||
|
|
Loading…
Reference in New Issue