[Tustep-Liste] Stringfolgen reduzieren
Reeg, Gottfried
gottfried.reeg at fu-berlin.de
Do Okt 14 09:05:03 CEST 2010
Lieber Thomas,
ein Hinweis: Es geht auch ohne Stringgruppen, wenn man eine Zeichenfolge als Randbedingung angibt, und die folgenden dann zu nichts austauschest. Das erspart das Definieren der Stringgruppen. Diese Randbedingungen sind oft sehr hilfreich (ich selbst verwende sie leider auch zu selten, aber Herr Schälkle hat ja neulich auch ein gutes Beispiel gegeben).
BUILD X_TABLE reduce_str= *
DATA :#[200E]#[200F]<|#[200E]#[200F]::
DATA :#[200F]#[200E]<|#[200F]#[200E]::
Grüße aus Berlin
Gottfried
________________________________________
Von: tustep-liste-bounces at lists.uni-wuerzburg.de [tustep-liste-bounces at lists.uni-wuerzburg.de] im Auftrag von Thomas Kollatz [kol at steinheim-institut.org]
Gesendet: Mittwoch, 13. Oktober 2010 14:04
An: tustep-liste at itug.de
Betreff: [Tustep-Liste] Stringfolgen reduzieren
Diskussionsforum Tustep-Liste
Weitere Informationen: www.itug.de
------------------------------------------------------------
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"
------------------------------------------------------------
Tustep-Liste at itug.de
https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
Mehr Informationen über die Mailingliste Tustep-Liste