File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change 5
5
import glob
6
6
import os
7
7
import re
8
+ import shutil
8
9
import subprocess
9
10
import sys
10
11
import threading
@@ -377,6 +378,21 @@ def get_exes_in_path(starts_with: str) -> List[str]:
377
378
return list (exes_set )
378
379
379
380
381
+ def center_text (msg : str , * , pad : str = ' ' ) -> str :
382
+ """Centers text horizontally for display within the current terminal, optionally padding both sides.
383
+
384
+ :param msg: message to display in the center
385
+ :param pad: (optional) if provided, the first character will be used to pad both sides of the message
386
+ :return: centered message, optionally padded on both sides with pad_char
387
+ """
388
+ term_width = shutil .get_terminal_size ().columns
389
+ surrounded_msg = ' {} ' .format (msg )
390
+ if not pad :
391
+ pad = ' '
392
+ fill_char = pad [:1 ]
393
+ return surrounded_msg .center (term_width , fill_char )
394
+
395
+
380
396
class StdSim (object ):
381
397
"""
382
398
Class to simulate behavior of sys.stdout or sys.stderr.
Original file line number Diff line number Diff line change @@ -276,3 +276,26 @@ def test_context_flag_bool(context_flag):
276
276
def test_context_flag_exit_err (context_flag ):
277
277
with pytest .raises (ValueError ):
278
278
context_flag .__exit__ ()
279
+
280
+
281
+ def test_center_text_pad_none ():
282
+ msg = 'foo'
283
+ centered = cu .center_text (msg , pad = None )
284
+ expected_center = ' ' + msg + ' '
285
+ assert expected_center in centered
286
+ letters_in_centered = set (centered )
287
+ letters_in_msg = set (msg )
288
+ assert len (letters_in_centered ) == len (letters_in_msg ) + 1
289
+
290
+ def test_center_text_pad_equals ():
291
+ msg = 'foo'
292
+ pad = '='
293
+ centered = cu .center_text (msg , pad = pad )
294
+ expected_center = ' ' + msg + ' '
295
+ assert expected_center in centered
296
+ assert centered .startswith (pad )
297
+ assert centered .endswith (pad )
298
+ letters_in_centered = set (centered )
299
+ letters_in_msg = set (msg )
300
+ assert len (letters_in_centered ) == len (letters_in_msg ) + 2
301
+
You can’t perform that action at this time.
0 commit comments