[Tustep-Liste] Stringfolgen reduzieren
Thomas Kollatz
kol at steinheim-institut.org
Mi Okt 13 14:04:04 CEST 2010
Liebe Liste,
hier ein kleines Problemchen, das aus der webbasierten Eingabe erwachsen ist.
Die Hürde, die die TUSTEP interne Kodierung für hebräische #h, griechisch #g oder russische #r Texteingabe darstellt, lässt sich mit relativ einfachen Mitteln überwinden, indem Eingabe und Korrektur über eine Browserschnittstelle erledigt werden. Die Nutzer können im bekannten und bewährten Schriftsystem eingeben, bearbeiten usw., anschliessend wird in die TUSTEP Datei die jeweilige Schrift in die entsprechende TUSTEP-Kodierung transformiert.
Funktioniert prima ...
In bidirektionalen Texten, mit denen ich es in Regel zu tun habe - Hebräisch läuft von rechts nach links, der deutsche Kommentar von links nach rechts -
werden zur korrekten Verarbeitung und Darstellung im Browser RIGHT-TO-LEFT-MARKS bzw. LEFT-TO-RIGHT-MARKS eingesetzt, die sich dann auch in der TUSTEP-Datei, in die im Hintergrund geschrieben wird finden.
Zum Unicode Standard bei bidirectionalen Texten s. z.B.
http://en.wikipedia.org/wiki/Right-to-left_mark
Aus mir nicht nachvollziehbaren Gründen werden diese Markierungen (#[200E] und #[200F]) bei jedem Schreibzugang eingetragen.
Im unten stehenden Beispiel - den ersten Versen der hebräischen Bibel - sind das immerhin 32 Zugriffe gewesen.
(Wer das nachvollziehen will, kann sich das Skript in den Editor kopieren und dann mit der Anweisung x #ma,<editor> direkt ausführen, TRACE und PRINT weisen auf die Unterschiede vor und nach der Bearbeitung hin).
Das wird schnell unübersichtlich ... darum habe ich eine Lösung mit String-Gruppen Definition und EXCHANGE gefunden, die
Aus redundantem:
#[200E]#[200F]#[200E]#[200F][200E]#[200F]#[200E]#[200F][200E]#[200F]#[200E]#[200F][200E]#[200F]#[200E]#[200F]
ein eindeutiges:
#[200E]#[200F]
macht.
Das geht ... der Text lässt sich nach wie vor korrekt im Browser aufrufen und übersichtlich in die TUSTEP-Datei schreiben.
Aber wäre nicht vielleicht eine Funktion denkbar, die reduntante Zeichen/Stringfolgen reduziert (flattened ?).
Gibts das vielleicht schon?
Kurz gesagt: Was mir praktisch erscheint, wäre eine Funktion die aus:
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
abc
macht.
Herzliche Grüße
THOMAS KOLLATZ
drs Thomas Kollatz - wissenschaftlicher Mitarbeiter / research assistant
* Salomon Ludwig Steinheim-Institut fuer deutsch-juedische Geschichte
D-47057 Duisburg Geibelstr. 41 T 0203-370071 F 0203-373380
* Institut <http://www.steinheim-institut.de/wiki/index.php/Mitarbeiter:Thomas_Kollatz>
* Epigraphische Datenbank <http://www.steinheim-institut.de/cgi-bin/epidat>
---------->
$$!
$$ MODE TUSCRIPT
- Nicht aufgelöste UNICODE Character, die reduziert werden sollen:
-> RIGHT-TO-LEFT-MARK #[200F]
-> LEFT-TO-RIGHT-MARK #[200E]
- Weitere nicht aufgelöste UNICODE Character:
-> CARRIAGE RETURN (CR) #[000D]
-> LINE FEED (LF) #[000A]
SET text = *
DATA <Ins>#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#h+brawit bra alhi^m at hwmi^m uat har^c#[000D]#[000A]uhar^c hith tuhu ubuhu#[000D]#[000A]uxuw^k yl pni thu^m#[000D]#[000A]umrxpt rux alhi^m#[000D]#[000A]uira alhi^m at hwmi^m uat har^c#[000D]#[000A]ugumr#[000D]#[000A]#[000D]#[000A]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#[200F]#[200E]#h-</Ins>
- Folgende Stringgroup schaltet von Left to Right um:
BUILD S_GROUP <[rl] =":#[200E]#[200F]:"
- Folgende Stringgroup schaltet von Right to Left um:
BUILD S_GROUP <[lr] =":#[200F]#[200E]:"
-> RLM + LRM vor dem hebräischen Text:
SET countrl = COUNT (text,":<[rl]:",0,":#h+:")
-> RLM + LRM nach dem hebräischen Text:
SET countlr = COUNT (text,":<[lr]:",":#h+:",":#h-:")
PRINT "vorher: "
TRACE *text
PRINT countrl," R2L-marks"
PRINT countlr," L2R-marks"
PRINT "-----"
BUILD X_TABLE reduce_str= *
DATA :<><[rl]:#[200E]#[200F]:
DATA :<><[lr]:#[200F]#[200E]:
SET textneu = EXCHANGE (text,reduce_str)
-> RLM + LRM vor dem hebräischen Text:
SET countrl = COUNT (textneu,":<[rl]:",0,":#h+:")
-> RLM + LRM nach dem hebräischen Text:
SET countlr = COUNT (textneu,":<[lr]:",":#h+:",":#h-:")
PRINT "nachher: "
TRACE *textneu
PRINT countrl," R2L-marks"
PRINT countlr," L2R-marks"
Mehr Informationen über die Mailingliste Tustep-Liste