@@ -247,6 +247,32 @@ def _resolve_lookups(self, obj, name, start, end):
247
247
raise ValueError ("Only '[' and '.' may follow ']'" )
248
248
return obj
249
249
250
+ def formatter_field_name_split (self ):
251
+ name = self .template
252
+ i = 0
253
+ end = len (name )
254
+ while i < end :
255
+ c = name [i ]
256
+ if c == "[" or c == "." :
257
+ break
258
+ i += 1
259
+ if i == 0 :
260
+ index = - 1
261
+ else :
262
+ try :
263
+ index = int (name [0 :i ])
264
+ except ValueError :
265
+ index = - 1
266
+ if index >= 0 :
267
+ first = int (index )
268
+ else :
269
+ first = name [:i ]
270
+ #
271
+ self .parser_list = []
272
+ self ._resolve_lookups (None , name , i , end )
273
+ #
274
+ return (first , iter (self .parser_list ))
275
+
250
276
def _convert (self , obj , conversion ):
251
277
conv = conversion [0 ]
252
278
if conv == "r" :
@@ -267,7 +293,7 @@ def _render_field(self, start, end, recursive, level):
267
293
if level == 1 : # ignore recursive calls
268
294
startm1 = start - 1
269
295
assert startm1 >= self .last_end
270
- self .parser_list_w .append ((
296
+ self .parser_list .append ((
271
297
self .template [self .last_end :startm1 ],
272
298
name ,
273
299
spec ,
@@ -292,9 +318,9 @@ def formatter_parser(self):
292
318
if self .last_end < len (self .template ):
293
319
lastentry = (
294
320
self .template [self .last_end :],
295
- space . w_None ,
296
- space . w_None ,
297
- space . w_None
321
+ None ,
322
+ None ,
323
+ None
298
324
)
299
325
self .parser_list .append (lastentry )
300
326
return iter (self .parser_list )
@@ -351,3 +377,16 @@ def encode(self, encoding="utf-8", errors="strict"):
351
377
352
378
353
379
str .encode = encode
380
+
381
+
382
+ def formatter_parser (string ):
383
+ return TemplateFormatter (string ).formatter_parser ()
384
+
385
+
386
+ def formatter_field_name_split (string ):
387
+ return TemplateFormatter (string ).formatter_field_name_split ()
388
+
389
+
390
+ import _string
391
+ _string .formatter_parser = formatter_parser
392
+ _string .formatter_field_name_split = formatter_field_name_split
0 commit comments