Prty::Section::Object - Abschnitts-Objekt
Prty::Object
Ein Objekt der Klasse repräsentiert einen "Abschnitt". Abschnitte werden von Prty::Section::Parser geparst und instanziiert.
Prty::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.
$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.
Quelltext des Abschnitts.
Name der Datei, die den Abschnitt enthält. Im Falle einer In-Memory-Datei ist der Dateiname "(source)".
(source)
Zeilennummer, an der der Abschnitt in der Datei beginnt.
Referenz auf Abschnitts-Objekt
Instanziiere 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 "{}".
$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)
$source = $sec->source;
Quelltext (String)
$sec->removeEofMarker;
nichts
$sec->deleteSource;
$file = $sec->file;
Dateiname (String)
$n = $sec->line;
Zeilennummer (Integer)
($file,$line) = $sec->fileInfo;
Dateiname (String) und Zeilennummer (Integer)
$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);
$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->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;
$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.08
Frank Seitz, http://fseitz.de/
Copyright (C) 2016 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Prty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prty
CPAN shell
perl -MCPAN -e shell install Prty
For more information on module installation, please visit the detailed CPAN module installation guide.