Ticket #7297: 7297.1.diff
File 7297.1.diff, 2.0 KB (added by , 16 years ago) |
---|
-
../django/utils/text.py
118 118 spaces are converted to underscores; and all non-filename-safe characters 119 119 are removed. 120 120 >>> get_valid_filename("john's portrait in 2004.jpg") 121 'johns_portrait_in_2004.jpg'121 u'johns_portrait_in_2004.jpg' 122 122 """ 123 123 s = force_unicode(s).strip().replace(' ', '_') 124 124 return re.sub(r'[^-A-Za-z0-9_.]', '', s) … … 127 127 def get_text_list(list_, last_word=ugettext_lazy(u'or')): 128 128 """ 129 129 >>> get_text_list(['a', 'b', 'c', 'd']) 130 'a, b, c or d'130 u'a, b, c or d' 131 131 >>> get_text_list(['a', 'b', 'c'], 'and') 132 'a, b and c'132 u'a, b and c' 133 133 >>> get_text_list(['a', 'b'], 'and') 134 'a and b'134 u'a and b' 135 135 >>> get_text_list(['a']) 136 'a'136 u'a' 137 137 >>> get_text_list([]) 138 ''138 u'' 139 139 """ 140 140 if len(list_) == 0: return u'' 141 141 if len(list_) == 1: return force_unicode(list_[0]) … … 198 198 199 199 smart_split_re = re.compile('("(?:[^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'(?:[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'|[^\\s]+)') 200 200 def smart_split(text): 201 """201 r""" 202 202 Generator that splits a string by spaces, leaving quoted phrases together. 203 203 Supports both single and double quotes, and supports escaping quotes with 204 204 backslashes. In the output, strings will keep their initial and trailing 205 205 quote marks. 206 206 207 >>> list(smart_split( 'This is "a person\'s" test.'))208 [ 'This', 'is', '"a person\'s"','test.']207 >>> list(smart_split(r'This is "a person\'s" test.')) 208 [u'This', u'is', u'"a person\\\'s"', u'test.'] 209 209 """ 210 210 text = force_unicode(text) 211 211 for bit in smart_split_re.finditer(text): … … 218 218 yield bit 219 219 smart_split = allow_lazy(smart_split, unicode) 220 220 221 # Work-around for http://bugs.python.org/issue1108 222 __doc__ = ''.join(( 223 get_valid_filename.__doc__, 224 get_text_list.__doc__, 225 smart_split.__doc__, 226 )) 227