46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
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()
|