@@ -103,6 +103,71 @@ def test_ansi_true_color():
103
103
]
104
104
105
105
106
+ def test_ansi_interpolation ():
107
+ # %-style interpolation.
108
+ value = ANSI ("\x1b [1m%s\x1b [0m" ) % "hello\x1b "
109
+ assert to_formatted_text (value ) == [
110
+ ("bold" , "h" ),
111
+ ("bold" , "e" ),
112
+ ("bold" , "l" ),
113
+ ("bold" , "l" ),
114
+ ("bold" , "o" ),
115
+ ("bold" , "?" ),
116
+ ]
117
+
118
+ value = ANSI ("\x1b [1m%s\x1b [0m" ) % ("\x1b hello" ,)
119
+ assert to_formatted_text (value ) == [
120
+ ("bold" , "?" ),
121
+ ("bold" , "h" ),
122
+ ("bold" , "e" ),
123
+ ("bold" , "l" ),
124
+ ("bold" , "l" ),
125
+ ("bold" , "o" ),
126
+ ]
127
+
128
+ value = ANSI ("\x1b [32m%s\x1b [45m%s" ) % ("He" , "\x1b llo" )
129
+ assert to_formatted_text (value ) == [
130
+ ("ansigreen" , "H" ),
131
+ ("ansigreen" , "e" ),
132
+ ("ansigreen bg:ansimagenta" , "?" ),
133
+ ("ansigreen bg:ansimagenta" , "l" ),
134
+ ("ansigreen bg:ansimagenta" , "l" ),
135
+ ("ansigreen bg:ansimagenta" , "o" ),
136
+ ]
137
+
138
+ # Format function.
139
+ value = ANSI ("\x1b [32m{0}\x1b [45m{1}" ).format ("He\x1b " , "llo" )
140
+ assert to_formatted_text (value ) == [
141
+ ("ansigreen" , "H" ),
142
+ ("ansigreen" , "e" ),
143
+ ("ansigreen" , "?" ),
144
+ ("ansigreen bg:ansimagenta" , "l" ),
145
+ ("ansigreen bg:ansimagenta" , "l" ),
146
+ ("ansigreen bg:ansimagenta" , "o" ),
147
+ ]
148
+
149
+ value = ANSI ("\x1b [32m{a}\x1b [45m{b}" ).format (a = "\x1b He" , b = "llo" )
150
+ assert to_formatted_text (value ) == [
151
+ ("ansigreen" , "?" ),
152
+ ("ansigreen" , "H" ),
153
+ ("ansigreen" , "e" ),
154
+ ("ansigreen bg:ansimagenta" , "l" ),
155
+ ("ansigreen bg:ansimagenta" , "l" ),
156
+ ("ansigreen bg:ansimagenta" , "o" ),
157
+ ]
158
+
159
+ value = ANSI ("\x1b [32m{:02d}\x1b [45m{:.3f}" ).format (3 , 3.14159 )
160
+ assert to_formatted_text (value ) == [
161
+ ("ansigreen" , "0" ),
162
+ ("ansigreen" , "3" ),
163
+ ("ansigreen bg:ansimagenta" , "3" ),
164
+ ("ansigreen bg:ansimagenta" , "." ),
165
+ ("ansigreen bg:ansimagenta" , "1" ),
166
+ ("ansigreen bg:ansimagenta" , "4" ),
167
+ ("ansigreen bg:ansimagenta" , "2" ),
168
+ ]
169
+
170
+
106
171
def test_interpolation ():
107
172
value = Template (" {} " ).format (HTML ("<b>hello</b>" ))
108
173
@@ -125,18 +190,18 @@ def test_interpolation():
125
190
126
191
def test_html_interpolation ():
127
192
# %-style interpolation.
128
- value = HTML ("<b>%s</b>" ) % "hello"
129
- assert to_formatted_text (value ) == [("class:b" , "hello" )]
193
+ value = HTML ("<b>%s</b>" ) % "& hello"
194
+ assert to_formatted_text (value ) == [("class:b" , "& hello" )]
130
195
131
- value = HTML ("<b>%s</b>" ) % ("hello" ,)
132
- assert to_formatted_text (value ) == [("class:b" , "hello" )]
196
+ value = HTML ("<b>%s</b>" ) % ("< hello> " ,)
197
+ assert to_formatted_text (value ) == [("class:b" , "< hello> " )]
133
198
134
- value = HTML ("<b>%s</b><u>%s</u>" ) % ("hello" , "world" )
135
- assert to_formatted_text (value ) == [("class:b" , "hello" ), ("class:u" , "world" )]
199
+ value = HTML ("<b>%s</b><u>%s</u>" ) % ("< hello> " , "</ world> " )
200
+ assert to_formatted_text (value ) == [("class:b" , "< hello> " ), ("class:u" , "</ world> " )]
136
201
137
202
# Format function.
138
- value = HTML ("<b>{0}</b><u>{1}</u>" ).format ("hello" , "world" )
139
- assert to_formatted_text (value ) == [("class:b" , "hello" ), ("class:u" , "world" )]
203
+ value = HTML ("<b>{0}</b><u>{1}</u>" ).format ("' hello' " , ' "world"' )
204
+ assert to_formatted_text (value ) == [("class:b" , "' hello' " ), ("class:u" , ' "world"' )]
140
205
141
206
value = HTML ("<b>{a}</b><u>{b}</u>" ).format (a = "hello" , b = "world" )
142
207
assert to_formatted_text (value ) == [("class:b" , "hello" ), ("class:u" , "world" )]
0 commit comments