Zum Inhalt springen

Regal:Programmierung: Vorlage:MultiCode/Doku

Aus Wikibooks
Comment Diese Vorlage benutzt eine komplexe Syntax des Media-Wiki-Templatesystems.

Bitte unternimm keine Veränderungen an diesem Template, solange Du Dir nicht absolut darüber im Klaren bist, wie dieses Template funktioniert. Sei darauf vorbereitet, dass sich Deine Veränderungen an diesem Template negativ auf Seiten oder andere Templates auswirken können, die dieses Template verwenden. Tests an diesem Template sollten ausschließlich auf der Spielwiesenvorlage vorgenommen werden.


Diese Vorlage stellt Code-Beispiele übersichtlich in mehreren Programmiersprachen dar. In erster Linie ist dies gedacht für .NET-Programme (siehe Arbeiten mit .NET), kann aber auch beim Vergleich von Programmiersprachen nützlich sein.

Sämtliche Abschnitte – Code-Auszüge und Ausgabe – benutzen die Vorlage:Klappbox und können wahlweise ein- oder ausgeklappt werden; dies beeinflusst auch die Druckvorschau. Die Ausgabe wird standardmäßig angezeigt; welche Code-Abschnitte angezeigt werden, wird durch den zweiten Parameter geregelt.

Siehe auch die Abschnitte Zielsetzung und Hinweise

Beispiel

Muster einer Anzeige
 Dies ist eine Kopfzeile mit einem fetten Wort.
C++-Quelltext
System::Windows::Forms::MessageBox::Show("Hallo, Welt!");
C#-Quelltext
using System.Windows.Forms;

namespace WikiBooks.CSharp
{
  public class MainForm : Form
  {
    public MainForm()
    {
      if(a=1 || b=2) { /* tu was */ }
    }
  }
}
Delphi.Prism-Quelltext
System.Windows.Forms.MessageBox.Show('Hallo, Welt!');
VB.NET-Quelltext
Dim a As Integer, b As Integer
a = 8 + 2
b = 10 + a
a = a + 1
Ausgabe
a = 10
b = 20
a = 11
Dies ist eine Fußzeile mit einem kursiven Wort.
Diese Anzeige wird durch folgende Eingabe erreicht:
{{Regal:Programmierung: Vorlage:MultiCode|error|csharp
|kopf=Dies ist eine Kopfzeile mit einem '''fetten''' Wort.
|fuss=Dies ist eine Fußzeile mit einem ''kursiven'' Wort.
|deutsch=1
|csharp=
using System.Windows.Forms;

namespace WikiBooks.CSharp
{
  public class MainForm : Form
  {
    public MainForm()
    {
      if(a=1 {{!!}} b=2) { /* tu was */ }
    }
  }
}
|vbnet=
Dim a As Integer, b As Integer
a = 8 + 2
b = 10 + a
a = a + 1
|cpp=
System::Windows::Forms::MessageBox::Show("Hallo, Welt!");
|delphi=
System.Windows.Forms.MessageBox.Show('Hallo, Welt!');
|output=
a = 10
b = 20
a = 11
}}

Die Parameter

Diese orientieren sich an den Vorlagen, die als Quellen verwendet wurden. Einige Parameter werden abweichend benutzt (wie error bzw. valid) oder gelten immer (wie coderahmen oder deutsch).

Pflicht-Parameter ohne Namen
  • (1) die allgemeine Vorgabe für die Anzeige
    • valid oder v – grüner Hintergrund, OK-Icon
    • error oder e – roter Hintergrund, Cancel-Icon
    • Standard – blauer Hintergrund, kein besonderer Hinweis
      Diese Variante wird in allen Fällen verwendet, in denen weder "e/error" noch "v/valid" angegeben wird; der erste Parameter kann auch leer sein.
  • (2) die Art des Ein-/Ausklappens
    • alle – Alle Code-Abschnitte werden zunächst verborgen, also nicht direkt angezeigt; das ist der Standardwert.
    • offen – Alle Code-Abschnitte werden direkt angezeigt.
    • csharp usw. – Nur der Code-Abschnitt der hier genannten Sprache wird direkt angezeigt, alle anderen Code-Abschnitte nicht.
      zur variablen Festlegung siehe unten unter "Zielsetzung"
Optionale Parameter im "Kopf" der Vorlage

Die folgenden Parameter können wahlweise angegeben oder weggelassen werden. Nur aus Gründen der Übersichtlichkeit wird empfohlen, sie am Anfang zusammenzufassen.

  • kopf – Am Anfang des Rahmens wird eine Kopfzeile ausgegeben; diese kann mit Wiki-Syntax beispielsweise fett formatiert werden.
    Bei valid oder error wird eine Kopfzeile als Begründung dringend empfohlen; das Icon wird als Zusatz zur Kopfzeile angezeigt.
  • fuss – Am Ende des Rahmens wird eine Fußzeile ausgegeben; diese kann ebenfalls mit Wiki-Syntax formatiert werden.
  • line=line (in dieser Schreibweise) – In den Code-Abschnitten werden die Zeilen nummeriert.
    Es wird empfohlen, dies nur in Ausnahmefällen zu benutzen, weil nummerierter Code nur umständlich mit Copy & Paste übernommen werden kann.
Optionale Parameter für die genaue Anzeige

Die folgenden Parameter enthalten den jeweiligen Quell- bzw. Ausgabetext.

  • output – Dies zeigt das Ergebnis einer Maßnahme an, z. B. einer Berechnung. Dieser Abschnitt wird als einfacher Text mit Schreibmschinenschrift formatiert (genauer: er benutzt die Syntax-Hervorhebung mit lang=text). Hervorhebung durch Wiki-Syntax ist nicht möglich.
  • cpp – als C++-Quelltext mit Syntax-Highlighting
  • csharp – als C#-Quelltext mit Syntax-Highlighting
  • delphi – als Delphi.Prism-Quelltext mit Syntax-Highlighting
  • vbnet – als VB.NET-Quelltext mit Syntax-Highlighting

Jeder Code-Abschnitt kann beliebig benutzt oder weggelassen werden. Die Abschnitte werden nach Alphabet sortiert; der Output-Abschnitt kommt (soweit vorhanden) immer am Schluss.

Weitere Programmiersprachen stehen zz. nicht zur Verfügung. Wünsche zur Ergänzung können auf der Diskussionsseite geäußert werden.

Für die Syntax-Hervorhebung wird das SyntaxHighlighting mit GeSHi verwendet; auf dieser Seite stehen unter Supported languages die Programmiersprachen, die eingebaut werden könnten. Die Möglichkeiten von GeSHi werden in den WikiMedia-Projekten teilweise nur mit großer Verzögerung aktualisiert – sowohl hinsichtlich der Programmiersprachen als auch bei den Schlüsselwörtern.

Achtung
  • Bei C, C++, C# kann das Pipe-Zeichen | nicht als Teil des Codes verwendet werden. Stattdessen muss {{!}} für | bzw. {{!!}} für || eingegeben werden (siehe das o. g. Beispiel).

Arbeitsweise

Die einzelnen Schritte werden im Quelltext der Vorlage als HTML-Kommentar beschrieben.

Die Code-Abschnitte und der Output-Abschnitt werden einheitlich durch Aufruf von Regal:Programmierung: Vorlage:CodeIntern dargestellt. Dies steuert Form und Darstellung der Vorlage:Klappbox und benutzt folgende Parameter:

  • (1) – Kopfzeile des Abschnitts, z. B. "C++-Quelltext"
  • (2) – Angabe dafür, wie der Abschnitt zum Ein-/Ausklappen vorbereitet wird; dazu wird der o. g. zweite Pflicht-Parameter für den verborgen-Parameter der Klappbox umgesetzt.
    Hinweis: Diese Umsetzung ist recht trickreich und sollte nicht mehr geändert werden.
  • (3) – Bezeichnung der Programmiersprache, wie für GeSHi vorgeschrieben
  • (4) – Umsetzung der Eingabe line=line in die Anforderung, dass GESHI_NORMAL_LINE_NUMBERS angezeigt werden sollen.
    Hinweis: Auch diese Umsetzung ist recht trickreich und sollte nicht mehr geändert werden.
  • code Text des eigentlichen Codes; dieser wird durch <syntaxhighlight lang="(Sprache)">Quelltext</syntaxhighlight> angezeigt.
    Hinweis: Wegen der Komplexität der Vorlagen muss dies mit {{#tag}} geregelt werden, siehe  Hilfe:Vorlagenprogrammierung#Funktion tag.

Zielsetzung

Diese Vorlage ist eine Erweiterung von Regal:Programmierung: Vorlage:NETcode mit folgenden Möglichkeiten:

  • Die einzelnen Code-Abschnitte werden zum Ein-/Ausklappen vorbereitet und wahlweise direkt angezeigt.
  • Zur Vereinheitlichung der Programmierung werden alle Code-Abschnitte über die Vorlage:CodeIntern angezeigt.
  • In den einzelnen Abschnitten wird Syntax-Highlighting mit <syntaxhighlight lang="(Sprache)">Quelltext</syntaxhighlight> benutzt.
  • Wenn eine bestimmte Programmiersprache direkt angezeigt werden soll, kann eine weitere Vorlage benutzt werden. Für Arbeiten mit .NET ist es so geregelt:
{{Regal:Programmierung: Vorlage:MultiCode|error|{{:Arbeiten mit .NET/ Vorlage:Ausklappen}}     // usw.

Sofern die Wiki-Syntax für Vorlagen dies ermöglicht, sollten noch eingebaut werden:

  • Abfragen innerhalb der Vorlage, die wiederholt benötigt werden, könnten durch "lokale Variable" zwischengespeichert werden.
    Dazu muss VariablesExtension zur Verfügung gestellt werden.
  • Jede beliebige Sprache sollte benutzt werden können, ohne dass die Vorlage überarbeitet werden muss.
    Um dies zu verwirklichen, müssen Schleifen aus Loops zur Verfügung stehen.
  • Der Leser einer Seite sollte wählen können, für welche Programmiersprache der Code immer angezeigt werden soll.
    Ob dies nur für angemeldete Benutzer und direkt oder über die Einstellungen gehen kann, ist nebensächlich. Es wäre nur schön, wenn der Leser und nicht der Vorlagen-Nutzer dies festlegen könnte.

Hinweise

Diese Vorlage basiert auf den folgenden Vorlagen:

Diese Version wurde erstellt von Jürgen unter Benutzung von sehr hilfreichen Tipps durch ThePacker.

Für die Code-Darstellung gibt es außer den genannten Vorlagen noch die folgenden Möglichkeiten: