NAME
Quiq::MediaWiki::Markup - MediaWiki Code Generator
BASE CLASS
DESCRIPTION
Ein Objekt der Klasse repräsentiert einen Generator für das MediaWiki-Markup. Die Methoden der Klasse erzeugen den Markup-Code, ohne dass man sich um die Details der Syntax kümmern muss. Die Implementierung ist nicht vollständig, sondern wird nach Bedarf erweitert.
Links
Das lokale MediaWiki ist erreichbar unter: http://localhost/mediawiki/ (anmelden als Benutzer fs, ggf. apache2ctl start)
Homepage: https://www.mediawiki.org/
CSS-Regeln: https://www.mediawiki.org/wiki/Manual:CSS
Globale Community Site für Wikimedia-Projekte: https://meta.wikimedia.org/
METHODS
Konstruktor
new() - Instantiiere Markup-Generator
Synopsis
$gen = $class->new;
Description
Instantiiere einen MediaWiki Markup Generator und liefere eine Referenz auf dieses Objekt zurück.
Blöcke
Der Code von Blöcken wird mit einer Leerzeile am Ende erzeugt, so dass alle Blöcke einfach konkateniert werden können.
code() - Erzeuge Code-Abschnitt
Synopsis
$code = $gen->code($text,$withFormatting);
Arguments
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für einen Code-Block mit dem Text $text und liefere diesen zurück. Ist $text undef oder ein Leerstring, wird ein Leerstring geliefert. Andernfalls wird $text per trim() von einer etwaigen Einrückung befreit, bevor er um zwei Leerzeichen eingerückt wird.
See Also
Examples
Text:
$gen->code("Dies ist\nein Test.");
erzeugt
| Dies ist | ein Test.
Eine Einrückung der Quelle wird automatisch entfernt:
$gen->code(q~ Dies ist ein Test. ~);
erzeugt
| Dies ist | ein Test.
comment() - Erzeuge Kommentar
Synopsis
$code = $gen->comment($text);
Arguments
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für einen Kommentar mit dem Text $text und liefere diesen zurück. Ist $text undef oder ein Leerstring, wird ein Leerstring geliefert. Andernfalls wird $text per trim() von einer etwaigen Einrückung befreit.
Ist der Kommentar einzeilig, wird die Kommentar-Klammer auf die gleiche Zeile gesetzt:
<!-- TEXT -->
Ist der Kommentar mehrzeilig, wird die Kommentar-Klammer auf separate Zeilen gesetzt und der Text um zwei Leerzeichen eingerückt:
<!--
TEXT
-->
See Also
Examples
Einzeiliger Kommentar:
$gen->comment('Dies ist ein Kommentar');
erzeugt
<!-- Dies ist ein Kommentar -->
Mehrzeiliger Kommentar:
$gen->comment(q~ Dies ist ein Kommentar ~);
erzeugt
<!-- Dies ist ein Kommentar -->
horizontalRule() - Erzeuge horizontale Trennline
Synopsis
$code = $gen->horizontalRule;
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für eine horizontale Trennline und liefere diesen zurück.
See Also
Example
$gen->horizontalRule;
erzeugt
----
image() - Erzeuge Bild
Synopsis
$code = $gen->image(@keyVal);
Options
- align => $align
-
Mögliche Werte: left, right, center, none.
- alt => $str
-
Alternativer Text.
- border => $bool
-
Umrandung.
-
Bildbeschriftung.
- file => $file
-
(Pflichtangabe) Name der Datei. Hier wird nur der Dateiname, bestehend aus NAME.EXT benötigt. Ein etwaiger Pfad, sofern vorhanden, wird entfernt. Die Datei muss zuvor ins MediaWiki hochgeladen worden sein.
- format => $format
-
Mögliche Werte: frameless, frame, thumb.
- height => $height
-
Höhe des Bildes.
- link => $url
-
Link, mit das Bild hinterlegt wird.
- page => $n
-
Seitennumer im Falle eines PDF.
- valign => $valign
-
Mögliche Werte: baseline, sub, super, top, text-top, middle, bottom, text-bottom.
- width => $width
-
Breite des Bildes.
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für ein Bild und liefere diesen zurück.
See Also
Example
$gen->image(
file => 'Ein_testbild.png',
width => 1200,
height => 900,
);
erzeugt
[[File:Ein_testbild.png|1200x900px]]
item() - Erzeuge Listenelement
Synopsis
$code = $gen->item($type,$val);
$code = $gen->item($type,$key,$val);
Arguments
- $type
-
Typ der Liste. Mögliche Typen einer Liste:
Die Typangabe kann auch aus mehreren Typangaben zusammengesetzt sein, wie es bei geschachtelten Listen benötigt wird, z.B. "*#*".
- $key
-
Definitionsterm (nur Definitionsliste).
- $val
-
Wert des Elements (alle Listen).
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für ein Listenelement des Typs $type und mit Wert $val. Im Falle einer Definitonsliste verwende den Definitionsterm $key.
See Also
Examples
Punktliste
$gen->item('*','Apfel');
produziert
* Apfel
Nummerierungsliste
$gen->item('#','Apfel');
produziert
# Apfel
Definitionsliste
$gen->item(';',A=>'Apfel);
produziert
; A : Apfel
Item einer untergeordneten Liste
$gen->item('#*','Apfel');
produziert
*#* Apfel
Item mit einer untergeordneten Liste als Wert
$gen->item('#',"* Apfel\n* Birne\n*Pflaume");
produziert
#* Apfel #* Birne #* Pflaume
list() - Erzeuge Liste
Synopsis
$code = $gen->list($type,\@items);
Arguments
- $type
-
Typ der Liste. Mögliche Werte:
- @items
-
Liste der List-Items. Im Falle einer Definitionsliste ist dies eine Liste von Schlüssel/Wert-Paaren. In allen anderen Fällen ist es eine Liste von skalaren Werten.
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für eine Liste des Typs $type mit den Elementen @items und liefere diesen zurück. Listen können auch geschachtelt werden. Siehe Examples.
See Also
Examples
Punktliste
$gen->list('*',['Apfel','Birne','Pflaume']);
produziert
* Apfel * Birne * Pflaume
Nummerierungsliste
$gen->list('#',['Apfel','Birne','Pflaume']);
produziert
# Apfel # Birne # Pflaume
Definitionsliste
$gen->list(';',[A=>'Apfel',B=>'Birne',C=>'Pflaume']);
produziert
; A : Apfel ; B : Birne ; C : Pflaume
* Geschachtelte Liste:
$code .= $gen->list('#',[
'Obst',
$gen->list('*',[
'Apfel',
'Birne',
'Pflaume',
]),
'Gemüse',
$gen->list('*',[
'Gurke',
'Spinat',
'Tomate',
]),
]);
produziert
# Obst
#* Apfel
#* Birne
#* Pflaume
# Gemüse
#* Gurke
#* Spinat
#* Tomate
paragraph() - Erzeuge Paragraph
Synopsis
$code = $gen->paragraph($text);
Arguments
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für einen Paragraphen mit dem Text $text und liefere diesen zurück. Ist $text undef oder ein Leerstring, wird ein Leerstring geliefert. Andernfalls wird $text per trim() von einer etwaigen Einrückung befreit.
See Also
Examples
Text:
$gen->paragraph("Dies ist\nein Test.");
erzeugt
Dies ist ein Test.
Eine Einrückung wird automatisch entfernt:
$gen->paragraph(q~ Dies ist ein Test. ~);
erzeugt
Dies ist ein Test.
section() - Erzeuge Abschnittsüberschrift
Synopsis
$code = $gen->section($level,$title);
Arguments
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für einen Abschnitt der Tiefe $level und der Abschnittsüberschrift $title und liefere diesen zurück.
See Also
Example
$gen->section(3,'Eine Überschrift');
produziert
=== Eine Überschrift ===
table() - Erzeuge Tabelle
Synopsis
$code = $gen->table(@keyVal);
Arguments
Die Argumentliste @keyVal wird gebildet über folgenden Schlüssel/Wert-Paaren:
- alignments => \@alignments (Default: [])
-
Liste der Kolumnen-Ausrichtungen. Mögliche Werte je Kolumne: 'left', 'right', 'center'.
- bodyBackground => $color (Default: '#ffffff')
-
Hintergrundfarbe der Rumpfzeilen.
-
Unterschrift der Tabelle.
- rows => \@rows (Default: [])
-
Liste der Tabellenzeilen.
- titleBackground => $color (Default: '#e8e8e8')
-
Hintergrundfarbe der Titelzeile.
- titles => \@titles (Default: [])
-
Liste der Kolumnentitel.
- valueCallback => sub {...} (Default: keiner)
-
Subroutine, die für jeden Wert (caption, title, row value) aufgerufen wird:
valueCallback => sub { my $val = shift; ... return $val; }
Die Subroutine wird z.B. von Sdoc verwendet, um Segmente zu expandieren:
valueCallback => sub { return $self->expandText($m,\shift); }
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für eine Tabelle und liefere diesen zurück.
Das Aussehen der MediaWiki-Tabelle wird durch CSS-Angaben bestimmt, die in den Wiki-Code eingestreut werden. Die Grundlage hierfür bietet die Standard-CSS-Klasse "wikitable" (siehe Link unten).
See Also
CSS der Klasse "wikitable": https://www.mediawiki.org/wiki/Manual:CSS
Example
Der Code
$gen->table(
alignments => ['left','right','center'],
caption => 'Eine Tabelle',
titles => ['L','R','Z'],
rows => [
['A',1,'ABCDEFG'],
['AB',12,'HIJKL'],
['ABC',123,'MNO'],
['ABCD',1234,'P'],
],
);
produziert
{| class="wikitable"
|+ style="caption-side: bottom; font-weight: normal"|Eine Tabelle
|-
! style="background-color: #e8e8e8; text-align: left" |L
! style="background-color: #e8e8e8; text-align: right" |R
! style="background-color: #e8e8e8" |Z
|-
| style="background-color: #ffffff" |A
| style="background-color: #ffffff; text-align: right" |1
| style="background-color: #ffffff; text-align: center" |ABCDEFG
|-
| style="background-color: #ffffff" |AB
| style="background-color: #ffffff; text-align: right" |12
| style="background-color: #ffffff; text-align: center" |HIJKL
|-
| style="background-color: #ffffff" |ABC
| style="background-color: #ffffff; text-align: right" |123
| style="background-color: #ffffff; text-align: center" |MNO
|-
| style="background-color: #ffffff" |ABCD
| style="background-color: #ffffff; text-align: right" |1234
| style="background-color: #ffffff; text-align: center" |P
|}
was in der Darstellung so aussieht
+-------+--------------------+
| L | R | Z |
+----------------------------+
| A | 1 | ABCDEFG |
+----------------------------+
| AB | 12 | HIJKL |
+----------------------------+
| ABC | 123 | MNO |
+----------------------------+
| ABCD | 1234 | P |
+----------------------------+
Eine Tabelle
tableOfContents() - Setze oder unterdrücke Inhaltsverzeichnis
Synopsis
$code = $gen->tableOfContents($bool);
Arguments
- $bool
-
Wenn wahr, wird an der aktuellen Position das Inhaltsverzeichnis der Seite gesetzt. Wenn falsch, wird kein Inhaltsverzeichnis für die Seite gesetzt, auch nicht automatisch.
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für das Setzen oder Unterdrücken des Inhaltsverzeichnisses und liefere diesen zurück.
See Also
Examples
Inhaltsverzeichnis setzen
$gen->tableOfContents(1);
erzeugt
__TOC__
Inhaltsverzeichnis unterdrücken
$gen->tableOfContents(0);
erzeugt
__NOTOC__
Inline Code
fmt() - Inline-Formatierung
Synopsis
$str = $gen->fmt($type,$text);
Description
Erzeuge Inline-Segment für Text $text und liefere den resultierenden Wiki-Code zurück. Ist $text undef oder ein Leerstring, wird ein Leerstring geliefert. Andernfalls wird $text per trim() von einer etwaigen Einrückung befreit und einzeilig gemacht, d.h. Zeilenumbrüche in $text werden entfernt.
Es existieren die Formatierungen:
- comment
-
Der Text wird als einzeiliger Kommentar gesetzt. Erzeugt:
<!-- TEXT -->
- italic
-
Erzeugt:
''TEXT''
- bold
-
Erzeugt:
'''TEXT'''
- boldItalic
-
Erzeugt:
'''''TEXT'''''
- code
-
Der Text wird nicht interpretiert. Erzeugt:
<code><nowiki>TEXT</nowiki></code>
- codeWithFormatting
-
Inline-Formatierungen wie bold und italic sind möglich. Erzeugt:
<code>TEXT</code>
- nowiki
-
Erzeugt:
<nowiki>TEXT</nowiki>
- nl
-
Erzeugt:
<br />
- quote
-
Erzeugt:
<q>TEXT</q>
See Also
indent() - Erzeuge Einrückung
Synopsis
$code = $gen->indent($n);
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für eine Einrückung der Tiefe $n und liefere diesen zurück.
See Also
Example
$gen->indent(2);
erzeugt
::
link() - Erzeuge internen oder externen Link
Synopsis
$code = $gen->link($type,$destination,$text);
Arguments
- $type
-
Art des Link. Mögliche Werte: 'internal', 'external'.
- $destination
-
Link-Ziel.
- $text
-
Link-Text.
Returns
Markup-Code (String)
Description
Erzeuge den MediaWiki Markup-Code für einen internen oder externen Link und liefere diesen zurück.
See Also
Examples
Interner Link
$gen->link('internal','Transaktionssicherheit', 'Abschnitt Transaktiossicherheit');
erzeugt
[[#Transaktionssicherheit|Abschnitt Transaktiossicherheit]]
Externer Link
$gen->link('external','http::/fseitz.de','Homepage Frank Seitz');
erzeugt
[http::/fseitz.de/ Homepage Frank Seitz]
Sonstiges
protect() - Schütze Metazeichen
Synopsis
$code = $gen->protect($text);
Description
Schütze alle Metazeichen in Text $text, so dass das Resultat als Inhalt in eine MediaWiki-Seite eingesetzt werden kann.
Testseite
testPage() - Erzeuge Test-Seite
Synopsis
$code = $this->testPage;
Description
Erzeuge eine Seite mit MediaWiki-Markup. Diese Seite kann in ein MediaWiki übertragen und dort optisch begutachtet werden.
Example
$ perl -MQuiq::MediaWiki::Markup -C -E 'print Quiq::MediaWiki::Markup->testPage'
VERSION
1.171
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2020 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.