60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
#!/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Fenrir TTY screen reader
|
|
# By Chrys, Storm Dragon, and contributers.
|
|
|
|
from core import debug
|
|
|
|
def getTextBetweenMarks(firstMark, secondMark, inText):
|
|
if inText == None:
|
|
return ''
|
|
if not isinstance(inText, list):
|
|
inText = inText.split('\n')
|
|
if len(inText) < 1:
|
|
return ''
|
|
if firstMark == None:
|
|
return ''
|
|
if secondMark == None:
|
|
return ''
|
|
if (firstMark['y'] + 1) * (firstMark['x'] + 1) <= (secondMark['y'] + 1) * (secondMark['x'] + 1):
|
|
startMark = firstMark.copy()
|
|
endMark = secondMark.copy()
|
|
else:
|
|
endMark = firstMark.copy()
|
|
startMark = secondMark.copy()
|
|
textPart = ''
|
|
if startMark['y'] == endMark['y']:
|
|
textPart += inText[startMark['y']][startMark['x']:endMark['x'] + 1]
|
|
else:
|
|
currY = startMark['y']
|
|
while currY <= endMark['y']:
|
|
if currY < endMark['y']:
|
|
if currY == startMark['y']:
|
|
textPart += inText[currY][startMark['x']:]
|
|
else:
|
|
textPart += inText[currY]
|
|
if len(inText[currY].strip()) != 0:
|
|
if len(textPart) - len(textPart.rstrip()) > 0:
|
|
textPart = textPart[:len(textPart.rstrip())] + "\n"
|
|
else:
|
|
textPart += '\n'
|
|
else:
|
|
textPart += inText[currY][:endMark['x'] + 1]
|
|
currY += 1
|
|
return textPart
|
|
|
|
def getTextBeforeMark(mark, inText):
|
|
if inText == None:
|
|
return ''
|
|
if mark == None:
|
|
return ''
|
|
return getTextBetweenMarks({'x':0,'y':0}, mark, inText)
|
|
|
|
def getTextAfterMark(mark, inText):
|
|
if inText == None:
|
|
return ''
|
|
if mark == None:
|
|
return ''
|
|
return getTextBetweenMarks(mark, {'x':len(inText[0])-1,'y':len(inText)-1}, inText)
|