55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
from fileinput import input as finput
|
|
|
|
class UntitledError: pass
|
|
class InternalError(UntitledError): pass
|
|
class ParsingError(UntitledError): pass
|
|
class MiscError(UntitledError): pass
|
|
|
|
class Element:
|
|
def __init__(self, element, data=None):
|
|
if not data: self.data = ""
|
|
else: self.data = data
|
|
self.element = element
|
|
def append(self, string, space=False):
|
|
if space: self.data += " "
|
|
self.data += string
|
|
|
|
def printchain(chain):
|
|
for i in chain:
|
|
if not i.data == None: print(i.data, i.element)
|
|
else: print(i.element)
|
|
|
|
chain = []
|
|
for i in finput():
|
|
i = i.rstrip()
|
|
|
|
# ignore blank lines
|
|
if len(i) == 0: continue
|
|
|
|
# lines with text
|
|
if i[0].isalpha(): chain.append(Element("p", i))
|
|
|
|
# we have a processing command
|
|
if not i[0].isalpha():
|
|
command = ""
|
|
params = ""
|
|
counter = 0
|
|
for j in i:
|
|
if not j.isalpha() \
|
|
and not j == ' ':
|
|
command += j
|
|
else:
|
|
if j == ' ':
|
|
params = i[counter + 1:]
|
|
else:
|
|
params = i[counter:]
|
|
break
|
|
counter += 1
|
|
if command[0] == "#": chain.append(Element("h" + str(len(command)), params))
|
|
elif command == "%": chain.append(Element("c", params))
|
|
elif command == "*": chain.append(Element("l", params))
|
|
elif command == "-": chain.append(Element("l", params))
|
|
elif command == ">": chain.append(Element("q", params))
|
|
elif command == "=": chain.append(Element("r", params))
|
|
printchain(chain)
|