diff --git a/uml.py b/uml.py new file mode 100644 index 0000000..58f91dc --- /dev/null +++ b/uml.py @@ -0,0 +1,54 @@ +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)