NAME
Quiq::Tag - Erzeuge Markup-Code gemäß XML-Regeln
BASE CLASS
SYNOPSIS
Modul laden und Objekt instantiieren
use Quiq::Tag;
my $p = Quiq::Tag->new;
Tag ohne Content
$code = $p->tag('person',
firstname => 'Lieschen',
lastname => 'Müller',
);
liefert
<person firstname="Lieschen" lastname="Müller" />
Tag mit Content
$code = $p->tag('bold','sehr schön');
liefert
<bold>sehr schön</bold>
Enthält der Content, wie hier, keine Zeilenumbrüche, werden Begin- und End-Tag unmittelbar um den Content gesetzt. Andernfalls wird der Content eingerückt mehrzeilig zwischen Begin- und End-Tag gesetzt. Siehe nächstes Beispiel.
Tag mit Unterstruktur
$code = $p->tag('person','-',
$p->tag('firstname','Lieschen'),
$p->tag('lastname','Müller'),
);
erzeugt
<person>
<firstname>Lieschen</firstname>
<lastname>Müller</lastname>
</person>
Das Bindestrich-Argument ('-'
) bewirkt, dass die nachfolgenden Argumente zum Content des Tag konkateniert werden. Die umständlichere Formulierung wäre:
$code = $p->tag('person',$p->cat(
$p->tag('firstname','Lieschen'),
$p->tag('lastname','Müller'),
));
DESCRIPTION
Ein Objekt der Klasse erzeugt Markup-Code gemäß den Regeln von XML. Mit den beiden Methoden tag() und cat() kann Markup-Code beliebiger Komplexität erzeugt werden.
METHODS
Instantiierung
new() - Konstruktor
Synopsis
$p = $class->new;
Returns
Objekt
Description
Instantiiere ein Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück.
Generierung
tag() - Erzeuge Tag-Code
Synopsis
$code = $p->tag($elem,@opts,@attrs);
$code = $p->tag($elem,@opts,@attrs,$content);
$code = $p->tag($elem,@opts,@attrs,'-',@content);
Arguments
- $elem
-
Name des Elements.
- @opts
-
Optionen. Siehe unten.
- @attrs
-
Element-Attribute und ihre Werte.
- $content
-
Inhalt des Tag.
- @contents
-
Sequenz von Inhalten.
Options
- -defaults => \@keyVals (Default: undef)
-
Liste der Default-Attribute und ihrer Werte. Ein Attribut in @keyVals, das nicht unter den Attributen @attrs des Aufrufs vorkommt, wird auf den angegebenen Defaultwert gesetzt.
- -elements => \%elements (Default: undef)
-
Hash, der die Default-Formatierung und Default-Attribute von Elementen definiert. Aufbau:
%elements = ( $elem => [$fmt,\@keyVals], ... )
Der Hash muss nicht jedes Element definieren. Nicht-vorkommende Elemente gemäß Default-Formatierung formatiert (siehe -fmt) besitzen keine Default-Attribute.
- -fmt => 'c'|'e'|'E'|'i'|'m'|'p'|'P'|'v' (Default: gemäß $elem)
-
Art der Content-Formatierung.
- 'c' (cdata):
-
Wie 'm', nur dass der Content in CDATA eingefasst wird (in HTML: script):
<TAG ...> // <![CDATA[ CONTENT // ]]> </TAG>\n
- 'e' (empty):
-
Element hat keinen Content (in HTML: br, hr, ...):
<TAG ... />\n
- 'E' (empty, kein Newline):
-
Wie 'e', nur ohne Newline am Ende (in HTML: img, input, ...):
<TAG ... />
- 'i' (inline):
-
Der Content wird belassen wie er ist. Dies ist nützlich für Tags, die in Fließtext eingesetzt werden. Ein Newline wird nicht angehängt.
Text Text <TAG ...>Text Text Text</TAG> Text Text
(in HTML: a, b, span, ...)
- 'm' (multiline):
-
Content wird auf eigene Zeile(n) zwischen Begin- und End-Tag gesetzt und um -ind=>$n Leerzeichen eingerückt:
<TAG ...> CONTENT </TAG>\n
Ist der Content leer, wird nur ein End-Tag gesetzt:
<TAG ... />\n
- 'M' (multiline, ohne Einrückung):
-
Wie 'm', nur ohne Einrückung (in HTML: html, ...):
<TAG ...> CONTENT </TAG>\n
- 'p' (protect):
-
Der Content wird geschützt, indem dieser einzeilig gemacht (LF und CR werden durch und ersetzt) und unmittelbar zwischen Begin- und End-Tag gesetzt wird (in HTML: pre, textarea, ...):
<TAG ...>CONTENT</TAG>\n
- 'P' (protect, Einrückung entfernen):
-
Wie 'p', nur dass die Einrückung des Content entfernt wird.
- 'v' (variable) = Default-Formatierung:
-
Ist der Content einzeilig, wird er unmittelbar zwischen Begin- und End-Tag gesetzt:
<TAG ...>CONTENT</TAG>\n
Ist der Content mehrzeilig, wird er eingerückt:
<TAG ...> CONTENT </TAG>\n
(in HTML: title, h1-h6, ...)
- -nl => $n (Default: 1)
-
Anzahl Newlines am Ende.
-nl => 0 (kein Newline):
<TAG>CONTENT</TAG>
-nl => 1 (ein Newline):
<TAG>CONTENT</TAG>\n
-nl => 2 (zwei Newlines):
<TAG>CONTENT</TAG>\n\n
usw.
- -placeholders => \@keyVal (Default: undef)
-
Ersetze im erzeugten Code die angegebenen Platzhalter durch ihre Werte.
Description
Erzeuge den Code eines Tag und liefere diesen zurück.
cat() - Füge Sequenz zusammen
Synopsis
$code = $p->cat(@opt,@args);
Arguments
Options
- -placeholders => \@keyVal
-
Ersetze im generierten Code die angegebenen Platzhalter durch die angegebenen Werte.
Description
Füge die Arguments @args zusammen und liefere den resultierenden Code zurück.
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.