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.225
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.