Karawane

 

Perl Open Report Framework

Demnächst im CPAN

Index

Karawane

 

 

Hallo,

ich entwickle ein neues Report Framework, das aus (einer Liste von) Arrays, Hashes oder Objects einen Report generiert, als Text, CSV, HTML, XML, ....

Download

Die erste lauffähige Version für Text, HTML und CSV steht bereit, siehe unten

Docs

Features

Als Einzeiler zum Debuggen mit AutoReport()

 
  Report::Porf::Framework::AutoReport(\@list_of_hashes); # prints out first 10 data rows
 

Konfiguration

Pro Spalte (Column), Zelle (Cell):

Mit


Warum noch ein neuer Perl-Report?

Es gibt natürlich diverse Perl-Report-Generatoren, aber ich habe nicht das passende gefunden. Ich kenne aber auch noch nicht alle...

Mindestens eine Eigenschaft fehlt den bereits vorhandenen Report-Generatoren/Frameworks:

Deshalb habe ich mit der Entwicklung des neuen Perl-Open-Report-Frameworks begonnen. HTML und Text werden bereits unterstützt.

Wer möchte, kann mit mir in meinem Blog auf blogspot über Porf diskutieren.


Beispiel

So leicht kann man drei Spalten einer Tabelle konfigurieren:

 
 #### --- Alternative 1 --- ARRAY --- Configure Columns like this ---------------------
 my $prename = 1;
 my $surname = 2;
 my $age     = 3;

 $report->ConfigureColumn(-header => 'Prename', -value_indexed => $prename ); # long
 $report->ConfCol        (-h      => 'Surname', -val_idx       => $surname ); # short
 $report->CC             (-h      => 'Age',     -vi            => $age     ); # minimal
 
oder
 
 #### --- Alternative 2 --- HASH --- Configure Columns like this ----------------------
 $report->ConfigureColumn(-header => 'Prename', -value_named => 'Prename' ); # long
 $report->ConfCol        (-h      => 'Surname', -val_nam     => 'Surname' ); # short
 $report->CC             (-h      => 'Age',     -vn          => 'Age'     ); # minimal

 
oder
 
 #### --- Alternative 3 --- OBJECT --- Configure Columns like this ------------------------
 $report->ConfigureColumn(-header => 'Prename', -value_object => 'GetPrename()'); # long
 $report->ConfCol        (-h      => 'Surname', -val_obj      => 'GetSurname()'); # short
 $report->CC             (-h      => 'Age',     -vo           => 'GetAge()'    ); # minimal

 
oder
 
 #### --- Alternative 4 --- Free --- Configure Columns like this --------------------------
 $report->ConfigureColumn(-h => 'Prename',  -value =>    '"Dr. " . $_[0]->{Surname}'    );
 $report->ConfCol        (-h => 'Surname',    -val => sub { return $_[0]->{Prename}; }; );
 $report->CC             (-h => 'Age (Months)', -v =>     '(12.0 * $_[0]->GetAge())'    );
 

Das ist die absolut minimale Konfiguration. Die Beispiele im Tarball behandeln alle weiteren Möglichkeiten.


Ergebnisse

Und so sieht das Ergebnis aus:

Als HTML-Tabelle:
PrenameSurnameAge
Vorname 1Name 16.66666666666667
Vorname 2Name 213.3333333333333
Vorname 3Name 320
Vorname 4Name 426.6666666666667
Vorname 5Name 533.3333333333333
Vorname 6Name 640
Vorname 7Name 746.6666666666667
Vorname 8Name 853.3333333333333
Vorname 9Name 960
Vorname 10Name 1066.6666666666667
Vorname 11Name 1173.3333333333333
Vorname 12Name 1280
Vorname 13Name 1386.6666666666667
Vorname 14Name 1493.3333333333333
Vorname 15Name 15100


Als Text:

*============+============+============*
|   Prename  |   Surname  |     Age    |
*------------+------------+------------*
| Vorname 1  | Name 1     | 7.69230769 |
| Vorname 2  | Name 2     | 15.3846153 |
| Vorname 3  | Name 3     | 23.0769230 |
| Vorname 4  | Name 4     | 30.7692307 |
| Vorname 5  | Name 5     | 38.4615384 |
| Vorname 6  | Name 6     | 46.1538461 |
| Vorname 7  | Name 7     | 53.8461538 |
| Vorname 8  | Name 8     | 61.5384615 |
| Vorname 9  | Name 9     | 69.2307692 |
| Vorname 10 | Name 10    | 76.9230769 |
| Vorname 11 | Name 11    | 84.6153846 |
| Vorname 12 | Name 12    | 92.3076923 |
| Vorname 13 | Name 13    | 100        |
*============+============+============*


© 2013 - 2014 Ralf Peine / Jupiter Programs