NAME
Prty::ContentProcessor - Prozessor für Abschnitts-Dateien
BASE CLASS
SYNOPSIS
use Prty::ContentProcessor;
$cop = Prty::ContentProcessor->new('.mytool',-extension=>['.myt']);
$cop->registerType('MyTool::Program::Shell','.mprg','[Program]',Language=>'Shell');
...
$cop->load(@paths)->generate->test;
DESCRIPTION
Ein Objekt der Klasse repräsentiert einen Prozessor für Abschnitts-Dateien, also Dateien, die von einem Abschnittsparser (s. Klasse Prty::Section::Parser) geparsed werden.
METHODS
Konstruktor
new() - Instantiiere ContentProcessor
Synopsis
$cop = $class->new($storageDir,@opt);
Description
Instantiiere ein ContentProcessor-Objekt und liefere eine Referenz auf dieses Objekt zurück.
Arguments
Options
- -extensions => \@extensions Liste der Datei-Erweiterungen der
-
Dateien, die der ContentProcessor verarbeitet. Hinzu kommen die Erweiterungen, die die per registerType() hinzugefügten Entitäts-Typen definieren. Die Extension wird ohne Punkt angegeben.
- -init => $bool (Default: 0)
-
Erzeuge und initialisiere Storage.
Returns
ContentProcessor-Objekt
Plugins
registerType() - Registriere Entitäts-Typ
Synopsis
$cop->registerType($pluginClass,$extension,$sectionType,@keyVal);
Description
Registriere Plugin-Klasse $pluginClass für Abschnitts-Objekte mit Identifier $sectionType und den Eigenschaften @keyVal. Die Plugin-Klasse wird automatisch geladen, falls sie noch nicht vorhanden ist (sie kann für Tests also auch "inline" definiert werden).
Die Plugin-Definition wird intern auf einem Hash-Objekt gespeichert, das vom ContentProcessor mit den instantiierten Entitten verknüpft wird.
Arguments
- $pluginClass
-
Name der Plugin-Klasse, z.B. 'Program::Shell'.
- $extension
-
Datei-Erweiterung für Dateien dieses Typs, ohne Punkt, z.B. 'prg'.
- $sectionType
-
Abschnitts-Bezeichner ohne Klammerung, z.B. 'Program'.
- @keyVal
-
Abschnitts-Attribute, die über den Abschnitts-Bezeichner hinaus den Dateityp kennzeichnen, z.B. Language=>'Shell'.
Returns
nichts
Operationen
load() - Lade Eingabe-Dateien
Synopsis
$cop = $cop->load(@opt,@paths);
Description
Lade die Eingabe-Dateien der Pfade @paths.
Arguments
Options
- -commit => $bool (default: 0)
-
Vergleiche die Entitäten gegen den Storage und übertrage die Veränderungen. Geänderte Entitäten werden in der in der Datenbank als geändert gekennzeichnet.
Returns
ContentProcessor-Objekt (für Method-Chaining)
generate() - Generiere Ausgabe-Dateien
Synopsis
$cop = $cop->generate($dir);
Description
Generiere in Zielverzeichnis $dir die Ausgabe-Dateien aller Entitäten.
Returns
ContentProcessor-Objekt (für Method-Chaining)
test() - Teste geänderten Code
Synopsis
$cop = $cop->test;
Returns
ContentProcessor-Objekt (für Method-Chaining)
Statistik
info() - Informationszeile
Synopsis
$str = $cop->info;
Description
Liefere eine Informationszeile mit statistischen Informationen, die am Ende der Verarbeitung ausgegeben werden kann.
Returns
Zeichenkette
Intern
extensionRegex() - Regex zum Auffinden von Eingabe-Dateien
Synopsis
$regex = $cop->extensionRegex;
Description
Liefere den regulären Ausdruck, der die Dateinamen matcht, die vom ContentProcessor verarbeitet werden. Der Regex wird genutzt, wenn ein Verzeichnis nach Eingabe-Dateien durchsucht wird.
Returns
kopilierter Regex
plugin() - Ermittele Plugin zu Abschnitts-Objekt
Synopsis
$plg = $cop->plugin($sec);
Description
Ermittele das Plugin zu Abschnitts-Objekt $sec. Existiert kein Plugin zu dem Abschnitts-Objekt, liefere undef
.
Arguments
Returns
Plugin-Objekt
state() - Liefere/Setze persistenten Entitäts-Status
Synopsis
$state = $cop->state($ent);
$state = $cop->state($ent,$state);
Description
Liefere/Setze den persistenten Status der Entität $ent. Der Entitäts-Status ist persistent und bleibt daher über Programmaufrufe hinweg erhalten.
Eine Entität besitzt einen von vier Status:
- 0
-
Nichts zu tun. Die Entität wurde nicht geändert.
- 1
-
Die Entitäts-Datei wurde geändert. Die Ausgabe-Dateien der Entität müssen neu generiert werden.
- 2
-
Der Code der Entität hat sich geändert. Die Entität und alle abhängigen Entitäten müssen getestet werden.
- 3
-
Nur die Entität selbst muss getestet werden. Die Entität selbst wurde nicht geändert, hängt aber von einer Entität ab, die geändert wurde, oder ihre Testdateien oder Testdaten wurden geändert, was keinen Test der abhängigen Entitäten erfordert.
Ohne Parameter aufgerufen, liefert die Methode den aktuellen Zustand der Entität. Mit Parameter gerufen, setzt die Methode den Zustand, wobei dieser persistent gespeichert wird.
stateDb() - Persistenter Hash für Entitäts-Status
Synopsis
$h = $cop->stateDb;
Description
Liefere eine Referenz auf den persistenten Hash, der den Status von Entitäten speichert.
storage() - Pfad zum oder innerhalb Storage
Synopsis
$path = $cop->storage;
$path = $cop->storage($subPath);
Description
Liefere den Pfad des Storage, ggf. ergänzt um den Sub-Pfad $subPath.
Arguments
Returns
Pfad
VERSION
1.097
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2016 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
3 POD Errors
The following errors were encountered while parsing the POD:
- Around line 688:
Expected text after =item, not a number
- Around line 693:
Expected text after =item, not a number
- Around line 698:
Expected text after =item, not a number