import sys import os sys.path.insert(1, os.path.join(sys.path[0], '..')) from parser import createLineData, parseLine def next(): # For blank lines, readline will return a newline. # For no result, readline will return a string of length 0. line = sys.stdin.readline() # Since we strip trailing newlines resulting in an empty string for empty lines, # return None if there actually is no result. return line.rstrip('\n') if len(line) > 0 else None def linedata_basic (indent): lineData = createLineData(indent) while (line := next()) != None: parseLine(line, lineData) print("| level {level} | indent {indent} | offsetHead {offsetHead} | offsetTail {offsetTail} | line {line} |".format( level = lineData['level'], indent = lineData['indent'], offsetHead = lineData['offsetHead'], offsetTail = lineData['offsetTail'], line = line )) def linedata_head_tail (): lineData = createLineData() while (line := next()) != None: parseLine(line, lineData) head = line[lineData['offsetHead']:lineData['offsetTail']] if len(line) > lineData['offsetHead'] else '' tail = line[lineData['offsetTail'] + 1:] if len(line) > lineData['offsetTail'] + 1 else '' print("| head {head} | tail {tail} |".format( head = head, tail = tail )) def main(): testName = sys.argv[1] if testName == 'linedata:basic': linedata_basic(' ') if testName == 'linedata:tabs': linedata_basic('\t') if testName == 'linedata:head-tail': linedata_head_tail() if __name__ == "__main__": main()