GeezerVison is showing github.com — More gracefully degrading string formatting syntax translation · rusthon/java2python@3be8010
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: java2python/mod/transform.py +14-4Lines changed: 14 additions & 4 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -117,15 +117,25 @@ def formatString(node, config): |
117 | 117 | method = dot.parent |
118 | 118 | arg_list = method.firstChildOfType(tokens.ARGUMENT_LIST) |
119 | 119 | call_args = [arg for arg in arg_list.childrenOfType(tokens.EXPR)] |
120 | | - |
121 | | - format = call_args[0].firstChildOfType(tokens.STRING_LITERAL) |
122 | 120 | args = [arg.firstChildOfType(tokens.IDENT) for arg in call_args[1:]] |
123 | 121 |
|
124 | | - # Translate format syntax |
125 | | - format.token.text = re.sub(r'%(?P<idx>\d+\$)?(?P<convers>[scdoxefg])', |
| 122 | + # Translate format syntax (if format == string_literal) |
| 123 | + format = call_args[0].firstChildOfType(tokens.STRING_LITERAL) |
| 124 | + if format: |
| 125 | + format.token.text = \ |
| 126 | + re.sub(r'%(?P<idx>\d+\$)?(?P<convers>[scdoxefg])', |
126 | 127 | formatSyntaxTransf, |
127 | 128 | format.token.text, |
128 | 129 | flags=re.IGNORECASE) |
| 130 | + else: |
| 131 | + # Translation should happen at runtime |
| 132 | + format = call_args[0].firstChild() |
| 133 | + if format.type == tokens.IDENT: |
| 134 | + # String variable |
| 135 | + pass |
| 136 | + else: |
| 137 | + # Function that returns String |
| 138 | + pass |
129 | 139 |
|
130 | 140 | left_ident = dot.children[0] |
131 | 141 | right_ident = dot.children[1] |
|