add paragraph and table rendering support
This commit is contained in:
parent
043cc2051c
commit
b13d3ab3e9
62
uml.py
62
uml.py
|
@ -21,6 +21,7 @@ class Element:
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str((str(self.element), str(self.data)))
|
return str((str(self.element), str(self.data)))
|
||||||
def __repl__(self): return self.__str__()
|
def __repl__(self): return self.__str__()
|
||||||
|
|
||||||
class Table:
|
class Table:
|
||||||
def __init__(self, data=None):
|
def __init__(self, data=None):
|
||||||
if data == None: self.data = []
|
if data == None: self.data = []
|
||||||
|
@ -54,6 +55,63 @@ def printchain(chain):
|
||||||
if not i.data == None: print(i.data, i.element)
|
if not i.data == None: print(i.data, i.element)
|
||||||
else: print(i.element)
|
else: print(i.element)
|
||||||
|
|
||||||
|
def renderer(chain):
|
||||||
|
for i in chain:
|
||||||
|
rendered = False
|
||||||
|
if i.element == "h1":
|
||||||
|
rendered = True
|
||||||
|
print("+" + (len(i.data) + 2) * "-" + "+")
|
||||||
|
print("| " + i.data + " |")
|
||||||
|
print("+" + (len(i.data) + 2) * "-" + "+")
|
||||||
|
elif i.element == "h2":
|
||||||
|
rendered = True
|
||||||
|
print(" " + i.data + " ")
|
||||||
|
print("=" * (len(i.data) + 2))
|
||||||
|
elif i.element == "h3":
|
||||||
|
rendered = True
|
||||||
|
print(" " + i.data + " ")
|
||||||
|
print("-" * (len(i.data) + 2))
|
||||||
|
elif "h" in i.element:
|
||||||
|
raise ParsingError("you cannot have more than three levels of headers")
|
||||||
|
elif i.element == "p":
|
||||||
|
rendered = True
|
||||||
|
isplit = i.data.split(' ')
|
||||||
|
buf = ""
|
||||||
|
|
||||||
|
for i in isplit:
|
||||||
|
if (len(i) + len(buf) + 1) <= 63:
|
||||||
|
if not len(buf) == 0: buf += " "
|
||||||
|
buf += i
|
||||||
|
else:
|
||||||
|
print(buf)
|
||||||
|
buf = ""
|
||||||
|
buf += i
|
||||||
|
print(buf)
|
||||||
|
elif i.element == "t":
|
||||||
|
buf = [0] * len(i.data.data[0])
|
||||||
|
for j in i.data.data:
|
||||||
|
c = 0
|
||||||
|
for k in j:
|
||||||
|
if len(k) > buf[c]: buf[c] = len(k)
|
||||||
|
c += 1
|
||||||
|
width = 0
|
||||||
|
for j in buf:
|
||||||
|
width += j
|
||||||
|
width += 2 * len(i.data.data[0]) + 1
|
||||||
|
print("+" + "-" * width + "+")
|
||||||
|
# don't ask
|
||||||
|
for j in range(len(i.data.data)):
|
||||||
|
c = 0
|
||||||
|
for k in range(len(i.data.data[j])):
|
||||||
|
if len(i.data.data[j][k]) < buf[c]:
|
||||||
|
i.data.data[j][k] = i.data.data[j][k].ljust(buf[c], " ")
|
||||||
|
cbuf = ""
|
||||||
|
for j in i.data.data:
|
||||||
|
cbuf = "| " + ' | '.join(j) + " |"
|
||||||
|
print(cbuf)
|
||||||
|
print("+" + "-" * width + "+")
|
||||||
|
if rendered: print()
|
||||||
|
|
||||||
chain = []
|
chain = []
|
||||||
flags = {
|
flags = {
|
||||||
"TABLE_PREV": False,
|
"TABLE_PREV": False,
|
||||||
|
@ -99,6 +157,8 @@ def main():
|
||||||
flags["TABLE_PREV"] = True
|
flags["TABLE_PREV"] = True
|
||||||
continue
|
continue
|
||||||
flags["TABLE_PREV"] = False
|
flags["TABLE_PREV"] = False
|
||||||
printchain(chain)
|
continue
|
||||||
|
# printchain(chain)
|
||||||
|
renderer(chain)
|
||||||
|
|
||||||
if __name__ == "__main__": main()
|
if __name__ == "__main__": main()
|
||||||
|
|
Loading…
Reference in New Issue