Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Spezifikation

Bearbeiten
  1. Das Modul soll Pharaonamen nach Typ sortieren können.
  2. Um das Ergebnis ausgeben zu können, müssen zunächst Zellen mit Hieroglyphen erzeugt werden können.
  3. Das Modul gibt die lokale Tabelle p zurück.
  4. Das Modul integriert das Modul:SimpleStruct.
  5. Das Modul integriert das Modul:Hiero/Cartouche.
  6. Das Modul exportiert Funktionen zur Verwendung in anderen Moduln.
    Hiermit soll vermieden werden, dass während der Entwicklung unnötig Lint-Fehler: Falsch verschachtelter Inhalt aufpoppen. Ein Modul:Hiero/Box (oder vielleicht ein Modul:Hiero?) soll erstellt werden, welches eine Tabelle erstellt und mit den Rückgabewerten der von Hiero/Cell exportierten Funktionen füllt. Dort können ggf. Testszenarien erstellt werden.
  7. Das Modul erhält zunächst folgende Funktionen:
    1. p.simple(frame): enthält im frame-Parameter einen namenlosen code, der zum Beispiel 'A1-X1:Z1*Z1' lauten kann. Damit ruft er die zu exportierende Funktion Cell.simple(frame, code) auf und liefert deren Ergebis zurück.
    2. Cell.simple(frame, code): übergibt den um hiero-tags vermehrten code an frame:preprocess und gibt das Ergebis vermehrt um einen Zellheader mit class="hiero" zurück.
    3. p.name(frame): enthält im frame-Parameter alles, um die Funktion Cell.cartouche(frame, NameType, code, symbol, border) aufzurufen und deren Ergebis zurückzugeben.
    4. Cell.name(frame, NameType, code, symbol, border): ruft die Funktion Hiero/Cartouche.name(frame, NameType, code, symbol, border) auf und gibt deren Ergebnis vermehrt um einen Zellheader mit class="hiero" zurück.
    5. p.complex(frame): enthält im frame-Parameter alles, um die Funktion Cell.complex(frame, NameType, Wikitext, symbol, border) aufzurufen und deren Ergebis zurückzugeben.
    6. Cell.complex(frame, NameType, Wikitext, symbol, border): ruft eine noch zu entwickelnde Funktion Hiero/Cartouche.complex(frame, NameType, Wikitext, symbol, border) auf und gibt deren Ergebnis vermehrt um einen Zellheader mit class="hiero" zurück.
    7. p.list(frame): enthält im frame-Parameter alles, um die Funktion
      Cell.list(frame, content) aufzurufen und deren Ergebis zurückzugeben. Dazu ruft sie SimpleStruct.parse(frame.args.content) auf.
    8. Cell.list(frame, content): Diese Funktion generiert aus dem übergebenen content-Parameter eine folge von Tabellenzeilen und -zellen im Wikitext-Format. Für die Darstellung der Hieroglyphen und Kartuschen werden dabei andere Funktionen aufgerufen, die einen frame-Parameter benötigen.

p.List soll zwei-, oder dreispaltige Ergebnisse liefern. Darin sollen die speziellen Namen eines Pharaos (Eigenname, Titulatur, etc.) in der zweiten Spalte eingetragen werden. Da es hier um eine nichtalphabetische Sortierung geht, werden nur spezifizierte Namenstypen in der Liste berücksichtigt. Alle anderen Namen sind nicht Gegenstand dieser Funktion.

In der ersten Spalte werden die Namenstypen, die ja den Sortierschlüssel bilden, eingetragen.

Die Option einer dritten Spalte besteht insbesondere dazu, senkrechte Kartuschen seitlich zu erläutern. Das bedeutet, dass die Transliteration und die fachübliche Aussprache dann in der dritten Spalte stehen. Das bietet auch die Möglichkeit, Erläuterungen, die für mehrere Einträge in der zweiten Spalte gültig sind, in eine zusammengefasste Zelle zu schreiben.

Parameter

Bearbeiten

Primär enthält ein an das Modul übergebener content-Parameter eine Struktur, die aus Namenstyp-Einträgen besteht.

Jeder Namenstyp-Eintrag enthält wiederum eine unbestimmte Anzahl an Namens- und Erläuterungseinträgen, mindestens jedoch einen („[]+“). Jeder Eintrag beginnt mit einem der Schlüsselworte empty, Wiki, simple, name, complex, spacedName, spacedComplex, annotatedName, oder annotatedComplex („[empty...|Wiki...| ...]“). Die Zelle mit dem Titel für den Namenstyp wird automatisch über so viele Zeilen zusammengefasst, wie Namens-, bzw. Erläuterungseinträge im Namenstypeintrag enthalten sind.

Im Folgenden werden einige Namenstypeinträge näher erläutert. Achtung! hier ist noch Raum für Änderungen.

  • Wiki ist für ein Feld mit Wikitext vorgesehen. Ein Leerfeld dahinter (für dreispaltige Tabellen) soll nicht existieren. Es darf jedoch mit colspan=2 definiert werden. Das Format ist also Wiki{Wikitext{<Wikitext>} [colspan{2}]? }, also z. B. Wiki{Wikitext{Ein schöner [[Text]]} }, oder Wiki{Wikitext{Ein noch schönerer [[Text]] über zwei Spalten} colspan{2} }.
  • name schreibt einen Namen in eine class="Hiero"-Zelle. Ein zwingender Parameter heist code und nimmt einen Hieroglyphencode (nach Gardiner-Liste, ohne <hiero>-Tags) auf. Das Format ist name{code{<Hiero-code>} [symbol{<symbol>}]? [border{<border>}]? [colspan{2}]? }.
  • complex schreibt einen Namen in eine class="Hiero"-Zelle. Der Code-Parameter nimmt hier jedoch Wikitext (z. B. mit <hiero>-Tags) auf. Ein design-Parameter nimmt HTML-Attribute für <td>-Tags auf.
  • annotatedName schreibt einen Namen und dahinter ein Wiki.
  • annotatedComplex desgleichen, jedoch analog zu complex.

Angaben für rowspan sollen stets nur auf eine Annotation (Wiki hinter einem Namen), bzw auf ein Spacing (Leerraum hinter einem Namen) angewandt werden und ermöglichen, dass sich eine Annotation auf mehrere Namen bezieht, bzw. dass der Leerraum zusammengefasst werden kann, wenn denn einer sein muss.

Der content-Parameter von p.list muss in der Form

[<NameType>{
   [Wiki{Wikitext{<Wikitext>} [colspan{2}]? } |
    simple{code{<Hiero-code>} } |
    name{code{<Hiero-code>} [symbol{<symbol>}]? [border{<border>}]? [colspan{2}]? } |
    complex{code{<Wikitext>} [symbol{<symbol>}]? [border{<border>}]?
            [design{<td-Attribute>}]? } |
    spacedSimple{code{<Hiero-code>} rowspan{<rowspan>} } |
    spacedName{code{<Hiero-code>} [symbol{<symbol>}]?
               [border{<border>}]? rowspan{<colspan>} } |
    spacedComplex{code{<Wikitext>} [symbol{<symbol>}]?
                  [border{<border>}]? colspan{<colspan>} } |
    annotatedSimple{code{<Hiero-code>}
                    Wikitext{<Wikitext>} [colspan{<colspan>}]? } |
    annotatedName{code{<Hiero-code>} [symbol{<symbol>}]? [border{<border>}]?
                  Wikitext{<Wikitext>} [colspan{<colspan>}]? } |
    annotatedComplex{code{<Wikitext>} [symbol{<symbol>}]? [border{<border>}]?
                     Wikitext{<Wikitext>} [design{<td-Attribute>}]? } ]+
   }]+

vorliegen, also z. B. zweispaltig:

 Thron{
   name{code{N5-C10-V30} border{ltr} }
   Wiki{
     Wikitext{Amenhotepneterheqawaset<br /> (Amen hotep neter heqa Waset)<br /> ''Jmn ḥtp nṯr ḥq3 W3st''<br /> ''Amun ist zufrieden, Gott, Herrscher von Theben''} }
 Eigen{
   name{code{M17-Y5:N35-R4:X1*Q3} border{ltr} }
   Wiki{
     Wikitext{Amenhotep (Amen hotep)<br /> ''Jmn ḥtp''<br /> ''[[Amun]] ist zufrieden''} }
   name{code{M17-Y5:N35:R4-S38-R19} border{ltr} }
   Wiki{
     Wikitext{Amenhotepheqawaset<br /> (Amen hotep heqa Waset)<br /> ''Jmn ḥtp ḥq3 W3st''<br /> ''Amun ist zufrieden, Herrscher von [[Theben (Ägypten)|Theben]]''} }

oder dreispaltig:

 Thron{
   name{code{N5-C10-V30} border{ltr} colspan{2} }
   Wiki{
     Wikitext{Amenhotepneterheqawaset<br /> (Amen hotep neter heqa Waset)<br /> ''Jmn ḥtp nṯr ḥq3 W3st''<br /> ''Amun ist zufrieden, Gott, Herrscher von Theben''}
     colspan{2} }
 Horus{
   annotatedName{
     code{E1!D40!N28!G17!C10} border{ltd}
     Wikitext{Ka-nechet cha-em-maat<br /> ''K3-nḫt ḫˁj-m-m3ˁt''<br /> ''Starker Stier, der in/als Maat erscheint''}
   annotatedName{
     code{E1!D40!S38-S38-S38-S38} border{ltd}
     Wikitext{Ka-nechet heqa-heqau<br /> ''K3-nḫt ḥq3-ḥq3w''<br /> ''Starker Stier, Herrscher der Herrscher''}
 Eigen{
   name{code{M17-Y5:N35-R4:X1*Q3} border{ltr} colspan{2} }
   Wiki{
     Wikitext{Amenhotep (Amen hotep)<br /> ''Jmn ḥtp''<br /> ''[[Amun]] ist zufrieden''}
     colspan{2} }
   name{code{M17-Y5:N35:R4-S38-R19} border{ltr} colspan{2} }
   Wiki{
     Wikitext{Amenhotepheqawaset<br /> (Amen hotep heqa Waset)<br /> ''Jmn ḥtp ḥq3 W3st''<br /> ''Amun ist zufrieden, Herrscher von [[Theben (Ägypten)|Theben]]''}
     colspan{2} }

Dabei muss leider auf Abstand zwischen den schließenden Klammern geachtet werden, damit es keine Probleme mit dem Ende eines Vorlagenaufrufs gibt. Der content-Parameter von Cell.list muss in der Form

{[<NameType>={
    [empty={colspan=<colspan>}|
     Wiki={Wikitext=<Wikitext> [, rowspan=<rowspan>|, colspan=<colspan>]? }|
     simple={code=<Hiero-code>}|
     name={code=<Hiero-code> [, symbol=<symbol>]? [, border=<border>]? [, colspan=<colspan>]? } |
     complex={code=<Wikitext> [, symbol=<symbol>]? [, border=<border>]? [, colspan=<colspan>]? } |
     spacedSimple={code=<Hiero-code>, rowspan=<rowspan> } |
     spacedName={code=<Hiero-code>, [symbol=<symbol>, ]?
                 [border=<border>, ]? colspan=<colspan>} |
     spacedComplex={code=<Wikitext>, [symbol=<symbol>, ]?
                    [border=<border>, ]? colspan=<colspan>} |
     annotatedSimple={code=<Hiero-code>,
                      Wikitext=<Wikitext> [, colspan=<colspan>]? } |
     annotatedName={code=<Hiero-code>, [symbol=<symbol>, ]? [border=<border>, ]?
                    Wikitext=<Wikitext> [, colspan=<colspan>]? } |
     annotatedComplex={code=<Wikitext>, [symbol=<symbol>, ]? [border=<border>, ]?
                       Wikitext=<Wikitext> [, colspan=<colspan>]? }]+ (kommasepariert)
    }]+ (kommasepariert)
  }

vorliegen, also im Beispiel:

{Thron={
   name={code="N5-C10-V30", border="ltr"},
   Wiki={
     Wikitext="Amenhotepneterheqawaset<br /> (Amen hotep neter heqa Waset)<br /> ''Jmn ḥtp nṯr ḥq3 W3st''<br /> ''Amun ist zufrieden, Gott, Herrscher von Theben''"}},
 Eigen={
   name={code="M17-Y5:N35-R4:X1*Q3", border="ltr"},
   Wiki={
     Wikitext="Amenhotep (Amen hotep)<br /> ''Jmn ḥtp''<br /> ''[[Amun]] ist zufrieden''},
   name={code="M17-Y5:N35:R4-S38-R19", border="ltr"},
   Wiki{
     Wikitext="Amenhotepheqawaset<br /> (Amen hotep heqa Waset)<br /> ''Jmn ḥtp ḥq3 W3st''<br /> ''Amun ist zufrieden, Herrscher von [[Theben (Ägypten)|Theben]]''"}}}

oder dreispaltig:

{Thron={
   name={code="N5-C10-V30", border="ltr", colspan=2},
   Wiki={
     Wikitext="Amenhotepneterheqawaset<br /> (Amen hotep neter heqa Waset)<br /> ''Jmn ḥtp nṯr ḥq3 W3st''<br /> ''Amun ist zufrieden, Gott, Herrscher von Theben''",
     colspan=2}},
 Horus={
   annotatedName={
     code="E1!D40!N28!G17!C10", border="ltd",
     Wikitext="Ka-nechet cha-em-maat<br /> ''K3-nḫt ḫˁj-m-m3ˁt''<br /> ''Starker Stier, der in/als Maat erscheint''"},
   annotatedName={
     code="E1!D40!S38-S38-S38-S38", border="ltd",
     Wikitext="Ka-nechet heqa-heqau<br /> ''K3-nḫt ḥq3-ḥq3w''<br /> ''Starker Stier, Herrscher der Herrscher''"}},
 Eigen={
   name={code="M17-Y5:N35-R4:X1*Q3", border="ltr", colspan=2},
   Wiki={
     Wikitext="Amenhotep (Amen hotep)<br /> ''Jmn ḥtp''<br /> ''[[Amun]] ist zufrieden''",
     colspan=2 },
   name={code="M17-Y5:N35:R4-S38-R19", border="ltr", colspan=2},
   Wiki={
     Wikitext="Amenhotepheqawaset<br /> (Amen hotep heqa Waset)<br /> ''Jmn ḥtp ḥq3 W3st''<br /> ''Amun ist zufrieden, Herrscher von [[Theben (Ägypten)|Theben]]''",
     colspan=2}}}

Alles, was "complex" im Namen hat, soll erst in einer zweiten Ausbaustufe implementiert werden.