Quiq::Section::Object - Abschnitts-Objekt
Quiq::Object
Ein Objekt der Klasse repräsentiert einen "Abschnitt". Abschnitte werden von Quiq::Section::Parser geparst und instantiiert.
Quiq::Section::Parser
Ein Abschnittsobjekt gibt Auskunft über den Inhalt des Abschnitts und dessen "Ort" (Dateiname und Zeilennummer). Das Objekt ist readonly, d.h. die Objekteigenschaften können gelesen aber nicht gesetzt werden.
Abschnittsobjekte können in einer hierarchischen Beziehung stehen. Ein Abschnitts-Objekt kann Unter-Abschnitte haben.
Abschnitts-Bezeichner.
Klammerung des Abschnittsbezeichners.
Liste der Schlüssel.
Attribut-Hash.
Inhalt des Abschnitts.
Quelltext des Abschnitts.
Name der Quelldatei.
Zeilennummer in Quelldatei.
$sec = $class->new($type,$keyValH); $sec = $class->new($type,$keyValH,$keyA,$content,$source,$file,$line);
Abschnitts-Typ einschließlich Klammern (sofern vorhanden).
Referenz auf Schlüssel/Wert-Hash.
Referenz auf Schlüssel-Array.
Inhalt.
Name der Datei, die den Abschnitt enthält. Im Falle von STDIN ist ist der Dateiname "-", im Falle einer In-Memory-Datei ist der Dateiname "(source)".
(source)
Zeilennummer, an der der Abschnitt in der Datei beginnt.
Referenz auf Abschnitts-Objekt
Instantiiere ein Abschnittsobjekt und liefere eine Referenz auf das Objekt zurück.
$type = $sec->type; $type = $sec->type($type);
Abschnittsbezeichner (String)
Liefere den Abschnittsbezeichner. Ist Parameter $type angegeben, setze den Abschnittsbezeichner auf diesen Wert.
$brackets = $sec->brackets; $brackets = $sec->brackets($brackets);
Klammerpaar (String)
Liefere die Klammerung um den Abschnittsbezeichner, sofern vorhanden. Ist der Abschnittsbezeichner nicht geklammert, liefere einen Leerstring. Ist Parameter $brackets angegeben, setze die Klammerung auf diesen Wert.
Die Klamerung um den Abschnitts-Bezeichner ist optional. Sie besteht aus der öffnenden und schließenden Klammer, ist also "[]", "<>" oder "()" oder "{}".
$fullType = $sec->fullType;
Liefere den vollständigen Abschnittsbezeichner einschließlich der Klammern.
$keyA|@keys = $sec->keys;
Liefere die Liste der Schlüssel. Im Skalarkontext liefere eine Referenz auf die Liste.
$hash|@arr = $sec->keyValHash;
Im Sklarkontext liefere eine Referenz auf den Attribut-Hash. Im Arraykontext liefere die Liste der Attribut/Wert-Paare.
$content = $sec->content; $content = $sec->content($content);
Inhalt (String)
$ref = $sec->contentRef;
Referenz auf Inhalt (String-Referenz)
$contentN = $sec->contentNL;
Inhalt mit Newline (String)
$file = $sec->file;
Dateiname (String)
$mtime = $sec->mtime;
Integer (Epoch-Wert)
$n = $sec->line;
Zeilennummer (Integer)
($file,$line) = $sec->fileInfo;
Dateiname (String) und Zeilennummer (Integer)
$source = $sec->source;
Quelltext (String)
$ref = $sec->sourceRef;
Skalar-Referenz
$sec->deleteSource;
nichts
$sec->transferSource;
Füge die Quelltexte aller Sub-Abschnitte von Abschnitt $sec zum Abschnitt hinzu. Die Quelltexte der Sub-Abschnitte werden von diesen gelöscht.
$sec->removeEofMarker;
$val = $sec->append($key=>$str);
Schlüssel, dessen Wert ergänzt wird.
Wert (String)
Füge Zeichenkette $str zum Wert des Schlüssels $key hinzu und liefere den resultierenden Wert zurück.
$val = $sec->get($key); @vals = $sec->get(@keys);
Schlüssel, deren Wert geliefert wird.
Wert (Skalar-Kontext) oder Wertliste (Array-Kontext)
Liefere den Wert zu Schlüssel $key bzw. die liste der Werte zu den Schlüsseln @keys. Beginnt der $key mit einem Großbuchstaben, ist es ein fataler Fehler, wenn zu dem Schlüssel mehrere Werte existieren. Solche Schlüssel müssen mit $obj->getArray() abgefragt werden.
$arr|@arr = $sec->getArray($key);
Schlüssel dessen Wertliste geliefert wird.
Wert bzw. Werte
Liefere die Wertliste von Schlüssel $key.
$bool = $sec->getBool($key); $bool = $sec->getBool($key,$default);
Schlüssel, dessen Wert geliefert wird.
Defaultwert, wenn Attribut nicht gesetzt
Wert (Skalar)
Liefere boolschen Wert zu Schlüssel $key.
$val = $sec->getMandatory($key);
Wie $sec->get(), nur dass ein Wert existieren muss, sonst wird eine Exception geworfen.
$ref = $sec->getRef($key);
($key,$val) = $sec->search(\@sections,\@keys);
Durchsuche die Liste der Abschnitts-Objekte ($self,@sections) nach dem ersten Attribut aus @keys, das einen Wert besitzt und liefere das Schlüssel/Wert-Paar zurück. Ist der Wert 'NULL', wird '' (Leerstring) geliefert. Auf diese Weise kann auf "höherer Ebene" definierter Wert außer Kraft gesetzt werden.
$val = $sec->try($key); @vals = $sec->try(@keys);
Wie get(), nur dass im Falle eines unerlaubten Schlüssels keine Exception geworfen, sondern undef geliefert wird.
undef
$val = $sec->memoize($key,$sub);
Die Methode liefert den Wert des Attributs $key. Ist kein Wert definiert (Wert ist undef), wird die Methode $sec->$sub($key) gerufen, der Wert berechnet und auf dem Attribut $key gespeichert. Weitere Aufrufe liefern diesen Wert, ohne dass er neu berechnet wird.
Die Methode ist nützlich, um in Objektmethoden eingebettet zu werden, die einen berechneten Wert liefern, der nicht immer wieder neu gerechnet werden soll.
sub name { return shift->memoize('name',sub { my ($self,$key) = @_; my $name = $self->get(ucfirst $key); $name =~ s/^\W+//; $name =~ s|\W+|/|g; return $name; }); }
$val = $sec->memoizeWeaken($key,$sub);
Die Methode ist identisch zu $sec->memoize(), nur dass eine Referenz ermittelt und automatisch zu einer schwachen Referenz gemacht wird.
$sec->set(@keyVal);
Schlüssel/Wert-Paare, die gesetzt werden.
$sec->setDefault(@keyVal);
Liste der Schlüssel/Wert-Paare.
Setze Schlüssel ohne Wert, d.h. wenn der Wert ein Leerstring ist, setze ihn auf den angegebenen Defaultwert.
$sec->setDefault( Width => 1000, EntityMenuWidth => 345, BorderWidth => 1, PackageMenuHeight => 34, );
$sec->add(@keyVal);
$sec->push($key,$val);
Arraykomponente.
Wert, der zum Array am Ende hinzugefügt wird.
Füge Wert $val zur Arraykomponente $key hinzu. Die Methode liefert keinen Wert zurück.
$ref = $sec->weaken($key); $ref = $sec->weaken($key=>$ref);
Mache die Referenz von Schlüssel $key zu einer schwachen Referenz und liefere sie zurück. Ist eine Referenz $ref als Parameter angegeben, setze die Referenz zuvor.
$sec->validate($contentAllowed,\@keys);
Wenn falsch, erlaubt der Abschnitt keinen Content (außer "# eof" als Dateiende-Markierung).
Liste der zulässigen Abschnittsattribute
Nichts
Die Methode finalisiert das Abschnittsobjekt in folgender Weise:
Sie prüft, dass wenn kein Content erlaubt ist, keiner existiert.
Sie prüft, dass nur Schlüssel im Objekt vorkommen, die in @keys vorkommen. Kommt ein anderer Schlüssel im Objekt vor, wird eine Exception geworfen.
Sie fügt Schlüssel aus @keys zum Objekt hinzu, die das Objekt nicht hat.
$sec->lockKeys;
$sec->error($msg,@keyVal);
Die Fehlermeldung.
Detailinformation zum Fehler.
Die Methode kehrt nicht zurück
Die Methode wirft eine Exception mit dem Fehlertext $msg und den als Schlüssel/Wert-Paare angegebenen Informationen @keyVal. Ferner wird von der Methode der Dateiname und die Zeilennummer des Abschnitts ergnzt. Die Exception beinhaltet keinen Stacktrace.
$val = $this->AUTOLOAD; $val = $this->AUTOLOAD($val);
Erzeuge beim ersten Aufruf eine Akzessor-Methode für einen Schlüssel des Schlüssel/Wert-Hashs und führe den betreffenden Methodenaufruf durch.
1.161
Frank Seitz, http://fseitz.de/
Copyright (C) 2019 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.