Das kann gut sein: Ich bin kein Programmierer. Hier ist der Code:
def W_nach_rechts_loeschen(**args):
# soll mal das Wort rechts vom Cursor löschen
import string
doc = XSCRIPTCONTEXT.getDocument()
text = doc.Text
view = doc.getCurrentController()
vC = view.ViewCursor
tC = doc.Text.createTextCursorByRange(vC)
Sonderzeichen = ",;:.?!-_–=/()<>‚‘“”"
# ein Wortzeichen steht für ein Wort oder trennt Wortteile:
Wortzeichen = "█§$%&€@#"
Stopper = " -_./"
fertig = False
tC.goRight(1, True )
Z1 = tC.getString()
istWortzeichen = Wortzeichen.find(Z1)
istSonderzeichen = Sonderzeichen.find(Z1)
tC.goLeft(1, True )
if Z1 == " ": # Z1 ist ein Leerzeichen
# ----------------------------------------------------------------------
# Leerzeichen gefunden: lösche alle weiteren Leerzeichen
# ----------------------------------------------------------------------
while not fertig:
if not tC.isEndOfParagraph():
tC.goRight(1, True)
Z2 = tC.getString()
if Z2 == " ":
text.insertString (tC, "", 1)
tC.collapseToStart()
else:
tC.goLeft(1, True)
tC.collapseToStart()
fertig = (( Z2 != " " ) or tC.isEndOfParagraph() )
fertig = (( Z2 != " " ) or tC.isEndOfParagraph() )
# -------------------------------------------------------------------------------------
# Jetzt sind alle Leerzeichen gelöscht (und eins bleibt stehen).
# Unterscheide 5 Fälle:
# 1) Wortzeichen 2) Sonderzeichen 3) Ziffer 4) Buchstabe
# 5) Absatzanfang
# -------------------------------------------------------------------------------------
fertig = False
if istWortzeichen > -1: # Z1 ist ein Wortzeichen
# text.insertString(tC, "---ist Wortzeichen---", 1)
# ----------------------------------------------------------------------
# Z1 ist ein Wortzeichen:
# lösche bis zum nächsten
# [Leerzeichen | geschützten Leerzeichen]:
# noch durch geschütztes Leerzeichen ersetzen!
# ---------------------------------------------------------------------
while not fertig:
if not tC.isEndOfParagraph():
tC.goRight(1, True)
Z2 = tC.getString()
# istWortzeichen = Wortzeichen.find(Z2)
if (Z2 != "ĸ") and (Z2 != " "): # Z2 ist ein (geschütztes) Leerzeichen
text.insertString (tC, "", 1)
tC.collapseToStart()
else:
text.insertString(tC, "", 1)
tC.collapseToStart()
fertig = ( (Z2 == "ĸ") or (Z2 == " ") or tC.isEndOfParagraph() )
fertig = ( (Z2 == "ĸ") or (Z2 == " ") or tC.isEndOfParagraph() )
elif istSonderzeichen > -1: # Z1 ist ein Sonderzeichen
# ----------------------------------------------------------------------
# Z1 ist ein Sonderzeichen:
# lösche alle Sonder- und Leerzeichen
# bis zum nächsten anderen Zeichen:
# ----------------------------------------------------------------------
while not fertig:
if not tC.isEndOfParagraph():
tC.goRight(1, True)
Z2 = tC.getString()
istSonderzeichen = Sonderzeichen.find(Z2)
if (istSonderzeichen > -1) or (Z2 == " "): # Z2 ist Sonderzeichen
text.insertString (tC, "", 1)
tC.collapseToStart()
else:
text.insertString(tC, "", 1) # war: tC.goLeft(1, True)
tC.collapseToStart()
fertig = (( istSonderzeichen == -1) or tC.isEndOfParagraph() )
fertig = (( istSonderzeichen == -1) or tC.isEndOfParagraph() )
tC.goRight(1, True)
text.insertString(tC, " ", 1)
tC.collapseToStart()
elif Z1.isdigit(): # Z1 ist eine Ziffer
# text.insertString(tC, "---ist Ziffer---", 1)
# ----------------------------------------------------------------------
# Z1 ist eine Ziffer:
# lösche alles bis zum nächsten Stopper:
# ----------------------------------------------------------------------
while not fertig:
if not tC.isEndOfParagraph():
tC.goRight(1, True)
Z2 = tC.getString()
istStopper = Stopper.find(Z2)
text.insertString (tC, "", 1)
tC.collapseToStart()
fertig = (( istStopper > -1) or tC.isEndOfParagraph() )
# "." ist ein Stopper, hinter dem ein Leerzeichen gelöscht werden muss:
if Z2 == ".":
tC.goRight(1, True)
text.insertString(tC, "", 1)
tC.collapseToStart()
elif Z1.isalpha():
# ----------------------------------------------------------------------
# Z1 ist ein Buchstabe:
# lösche alles bis zum nächsten Stopper:
# (nicht mit Ziffer zusammenfassen, um später
# ggf. eine getrennte Behandlung zu ermöglichen)
# ----------------------------------------------------------------------
while not fertig:
if not tC.isEndOfParagraph():
tC.goRight(1, True)
Z2 = tC.getString()
istStopper = Stopper.find(Z2)
text.insertString (tC, "", 1)
tC.collapseToStart()
fertig = (( istStopper > -1) or tC.isEndOfParagraph() )
# "." ist ein Stopper, hinter dem ein Leerzeichen gelöscht werden muss:
if Z2 == ".":
tC.goRight(1, True)
text.insertString(tC, "", 1)
tC.collapseToStart()
elif tC.isEndOfParagraph():
tC.goRight(1, True)
text.insertString(tC, " ", 1)
tC.collapseToStart()