mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Template filters now pass numerical arguments through as numbers.
This was the (undocumented) behaviour prior to r10118 and now it's back again. It's neither hard nor harmful to maintain compatibility with the old ways. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10169 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -445,16 +445,17 @@ class TokenParser(object): | ||||
|             self.pointer = i | ||||
|             return s | ||||
|  | ||||
| # This only matches constant *strings* (things in quotes or marked for | ||||
| # translation). Numbers are treated as variables for implementation reasons | ||||
| # (so that they retain their type when passed to filters). | ||||
| constant_string = r""" | ||||
| (?:%(i18n_open)s%(strdq)s%(i18n_close)s| | ||||
| %(i18n_open)s%(strsq)s%(i18n_close)s| | ||||
| %(strdq)s| | ||||
| %(strsq)s)| | ||||
| %(num)s | ||||
| %(strsq)s) | ||||
| """ % { | ||||
|     'strdq': r'"[^"\\]*(?:\\.[^"\\]*)*"', # double-quoted string | ||||
|     'strsq': r"'[^'\\]*(?:\\.[^'\\]*)*'", # single-quoted string | ||||
|     'num': r'[-+\.]?\d[\d\.e]*', # numeric constant | ||||
|     'i18n_open' : re.escape("_("), | ||||
|     'i18n_close' : re.escape(")"), | ||||
|     } | ||||
| @@ -462,17 +463,18 @@ constant_string = constant_string.replace("\n", "") | ||||
|  | ||||
| filter_raw_string = r""" | ||||
| ^(?P<constant>%(constant)s)| | ||||
| ^(?P<var>[%(var_chars)s]+)| | ||||
| ^(?P<var>[%(var_chars)s]+|%(num)s)| | ||||
|  (?:%(filter_sep)s | ||||
|      (?P<filter_name>\w+) | ||||
|          (?:%(arg_sep)s | ||||
|              (?: | ||||
|               (?P<constant_arg>%(constant)s)| | ||||
|               (?P<var_arg>[%(var_chars)s]+) | ||||
|               (?P<var_arg>[%(var_chars)s]+|%(num)s) | ||||
|              ) | ||||
|          )? | ||||
|  )""" % { | ||||
|     'constant': constant_string, | ||||
|     'num': r'[-+\.]?\d[\d\.e]*', | ||||
|     'var_chars': "\w\." , | ||||
|     'filter_sep': re.escape(FILTER_SEPARATOR), | ||||
|     'arg_sep': re.escape(FILTER_ARGUMENT_SEPARATOR), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user