from collections import defaultdict
import math
import sys
-from typing import List, NamedTuple
+from typing import List, NamedTuple, Optional
from ansi import fg, reset
class Indenter:
"""
- with Indenter() as i:
- i.print('test')
- with i:
- i.print('-ing')
+ with Indenter(pad_count = 8) as i:
+ i.print('test')
with i:
- i.print('1, 2, 3')
+ i.print('-ing')
+ with i:
+ i.print('1, 2, 3')
"""
- def __init__(self):
+ def __init__(self,
+ *,
+ pad_prefix: Optional[str] = None,
+ pad_char: str = ' ',
+ pad_count: int = 4):
self.level = -1
+ if pad_prefix is not None:
+ self.pad_prefix = pad_prefix
+ else:
+ self.pad_prefix = ''
+ self.padding = pad_char * pad_count
def __enter__(self):
self.level += 1
def print(self, *arg, **kwargs):
import string_utils
text = string_utils.sprintf(*arg, **kwargs)
- print(" " * self.level + text)
+ print(self.pad_prefix + self.padding * self.level + text, end='')