[Allegro] Registermaskerade revisited

Thomas Berger ThB at Gymel.com
Do Dez 4 16:03:27 CET 2014


Lieber Herr Eversberg, liebe Liste,

vorhin ausgegraben hatte ich einen Beitrag vom November 2009, der
auch auf Unstimmigkeiten bei der Registermaskerade einging:

>>>
* Anders als die Umcodierungsabschnitte ist bei der Registermaskerade
  nicht das Praefix des virtuellen Registers in #u1 enthalten. Das ist
  nicht gut, und umgekehrt waere es auch nicht gut: Es gibt einfach
  drei Faelle, die die Registermaskerade unterscheiden muss:
  1. Hauptregister und seine Aufbereitung
  2. Spezialabschnitt im Hauptregister mit spezieller Aufbereitung
  3. Spezialabschnitt mit spezieller Aufbereitung, jedoch im Kontext
     des virtuellen Registers zu praesentieren, d.h. die Aufbereitung
     muss vermeiden, das Praefix in den Ausgabetext zu integrieren, sie
     muss aber zunaechst bemerken koennen, dass sie einen Eintrag aus
     dem Spezialabschnitt verarbeitet
  Ich koennte mir vorstellen, dass hier #u2 mit dem Namen des virtuellen
  Registers belegt werden koennte, sofern der Zugriff derzeit darueber
  erfolgt. #u1 hingegen sollte (Vorschlag) analog den Umcodierungsabschnitten
  die "echte" Registerzeile enthalten, also inklusive Praefix.
<<<

Hierzu ein konkreteres Beispiel (nicht voellig absurd und an der
Demo-Datenbank realisierbar):

ISN ist der Praefixbereich "i" aus Register 9 und die Register-
maskerade soll uns dessen Anzeige verschoenern, etwa indem aus
dem realen Eintrag

i978-3-89873-580

ein

i978-3-89873-580-7

gemacht wird.

In dieser Situation (betrachtet wird Bereich "i" im Register 9) ist das
"i" am Anfang der Registerzeile fuer den Fussabschnitt der Registermaskerade
sichtbar, er "weiss" dass es sich um ISBNs handelt, und kann entsprechend
agieren.

Schaltet man nun jedoch im Indexfenster auf das symbolische Register "ISN",
so bekommt der Fussabschnitt in #u1 zwar die Registernummer 9 und die
Trefferzahl mitgeteilt, dann aber als eigentliche Indexzeile die Sicht auf
eine Indexzeile, in der das Praefix "i" bereits entfernt wurde: Er kann also
nicht mehr auf ISBNs erkennen und die huebsche Aufbereitung unterbleibt.

Wuerde a99 dem Fussabschnitt das Praefix "i" in den einzelnen Indexzeilen nicht
vorenthalten (also so wie bei der Umcodierung agieren), dann koennte der
Maskerade-Abschnitt auf "ISBN-Behandlung erforderlich" testen, allerdings
muesste er dann auch das "i" ausgeben, solange an dieser Stelle nicht erkannt
werden kann, ob die Aufbereitung fuer das nackte Register 9 oder das virtuelle
Register ISN erfolgen soll: a99 muesste das Praefix also erst nach der
Maskerade entfernen, kann das aber nicht besonders gut, da die Maskerade auch
in die 5 Zeichenpositionen fuer die Zaehlung schreiben darf.

Vor allem aber hilft das nicht einmal, denn mit Praefix "i978-" sind dieselben
realen  Schluessel auch als Sonderregister "ISB" bekannt, dort muesste aus

i978-3-89873-580  (real)
bzw.
3-89873-580 (ohne Praefix)

ein

3-89873-580-X

werden: Selbst wenn hier das "i978-" in #u1 verfuegbar waere (und spaeter
automatisch entfernt wuerde), wuerde immer noch die falsche Aufbereitung
ausgeloest ("-7" ergaenzt statt "-X"), korrekter Ablauf ist nur gewaehrleistet,
wenn entweder symbolischer Registername (ISB bzw. ISN) oder das konkrete
Praefix ("i" bzw. "i987-") *separat* in irgendeiner Sonderkategorie dem
Fussabschnitt zur Verfuegung stehen: Dann kann der Fussabschnitt darauf
reagieren und es muessen auch keine Verrenkungen zum vorherigen Ergaenzen
und nachtraeglichem Abschneiden des Praefix eingebaut werden (2009 schlug
ich noch vor, das Praefix in #u1 zu ergaenzen, das ziehe ich nun zurueck)

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro