File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed
Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -288,3 +288,35 @@ def visit_Name(self, node):
288288
289289 def visit_Str (self , node ):
290290 self .result += "'" + node .s + "'"
291+
292+ def visit_joined_str (self , node , surround = True ):
293+ for val in node .values :
294+ if isinstance (val , ast .Str ):
295+ self .result += val .s
296+ else :
297+ self .visit (val )
298+
299+ def visit_JoinedStr (self , node ):
300+ """
301+ JoinedStr(expr* values)
302+ """
303+ self .result += "f\' "
304+ self .visit_joined_str (node )
305+ self .result += "'"
306+
307+ def visit_FormattedValue (self , node ):
308+ """
309+ FormattedValue(expr value, int? conversion, expr? format_spec)
310+ """
311+ self .result += '{'
312+ self .visit (node .value )
313+ self .result += {
314+ - 1 : '' , # no formatting
315+ 97 : '!a' , # ascii formatting
316+ 114 : '!r' , # repr formatting
317+ 115 : '!s' , # string formatting
318+ }[node .conversion ]
319+ if node .format_spec :
320+ self .result += ':'
321+ self .visit_joined_str (node .format_spec )
322+ self .result += '}'
Original file line number Diff line number Diff line change @@ -71,3 +71,11 @@ def test_list_one_element(self):
7171 def test_list_two_elements (self ):
7272 label = self .perform_labeling_on_expression ('[1, 2]' )
7373 self .assertEqual (label .result , '[1, 2]' )
74+
75+ def test_joined_str (self ):
76+ label = self .perform_labeling_on_expression ('f"a{f(b)}{c}d"' )
77+ self .assertEqual (label .result , 'f\' a{f(b)}{c}d\' ' )
78+
79+ def test_joined_str_with_format_spec (self ):
80+ label = self .perform_labeling_on_expression ('f"a{b!s:.{length}}"' )
81+ self .assertEqual (label .result , 'f\' a{b!s:.{length}}\' ' )
You can’t perform that action at this time.
0 commit comments