-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstringbuilder.py
More file actions
39 lines (31 loc) · 1.11 KB
/
Copy pathstringbuilder.py
File metadata and controls
39 lines (31 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class StringBuilder:
def __init__(self, linebreak="\n"):
self.string = ""
self.level = 0
self.line_break = linebreak
self.current_indent = ""
self.new_line_flag = True
def push_indent(self):
self.level += 1
self.current_indent = " " * (4 * self.level)
def pop_indent(self):
if self.level > 0:
self.level -= 1
self.current_indent = " " * (4 * self.level)
def append_indent_if_necessary(self):
if self.new_line_flag:
self.new_line_flag = False
self.string += self.current_indent
def append_line(self, text=None):
self.append((text or '') + self.line_break)
def append(self, text):
pieces = text.split(self.line_break)
for i in range(len(pieces)):
if pieces[i] != "" and pieces[i] is not None:
self.append_indent_if_necessary()
self.string += pieces[i]
if i < len(pieces) - 1:
self.string += self.line_break
self.new_line_flag = True
def __str__(self):
return self.string