NAME
Quiq::Table - Tabelle
BASE CLASS
SYNOPSIS
Mit Kolumnennamen:
use Quiq::Table;
# Daten
@rows = (
[1, 'A', 76.253],
[12, 'AB', 1.7 ],
[123,'ABC',9999 ],
);
# Objekt instantiieren
$tab = Quiq::Table->new(['a','b','c'],\@rows);
# Werte der Kolumne b
@values = $tab->values('b');
say "@values";
==>
A AB ABC
# Ausgabe als Text-Tabelle
print $tab->asText;
==>
| 1 | A | 76.253 |
| 12 | AB | 1.700 |
| 123 | ABC | 9999.000 |
Ohne Kolumnennamen:
use Quiq::Table;
# Daten
@rows = (
[1, 'A', 76.253],
[12, 'AB', 1.7 ],
[123,'ABC',9999 ],
);
# Objekt instantiieren
$tab = Quiq::Table->new(3,\@rows);
# Werte der Kolumne 1 (0-basierte Zählung)
@values = $tab->values(1);
say "@values";
==>
A AB ABC
# Ausgabe als Text-Tabelle
print $tab->asText;
==>
| 1 | A | 76.253 |
| 12 | AB | 1.700 |
| 123 | ABC | 9999.000 |
DESCRIPTION
Ein Objekt der Klasse repräsentiert eine Tabelle, also eine Liste von Arrays identischer Größe. Die Kolumnen können über ihre Position oder ihren Namen (sofern definiert) angesprochen werden. Die Klasse kann die Daten in verschiedenen Formaten tabellarisch ausgegeben.
EXAMPLE
Siehe quiq-ls
METHODS
Klassenmethoden
new() - Konstruktor
Synopsis
$tab = $class->new($width);
$tab = $class->new($width,\@rows);
$tab = $class->new(\@columns);
$tab = $class->new(\@columns,\@rows);
Arguments
- $width
-
Anzahl der Kolumnen (Integer).
- @columns
-
Liste von Kolumnennamen (Array of Strings).
- @rows
-
Liste von Zeilen (Array of Arrays).
Returns
Referenz auf Tabellen-Objekt
Description
Instantiiere ein Tabellen-Objekt und liefere eine Referenz auf dieses Objekt zurück.
Objektmethoden
columns() - Liste der Kolumnennamen
Synopsis
@columns | $columnA = $tab->columns;
Returns
Liste der Kolumnennamen (Strings). Im Skalarkontext eine Referenz auf die Liste.
Description
Liefere die Liste der Kolumnennamen der Tabelle.
count() - Anzahl der Zeilen
Synopsis
$count = $tab->count;
Returns
Integer
Description
Liefere die Anzahl der Zeilen der Tabelle.
pos() - Position einer Kolumne
Synopsis
$pos = $tab->pos($column);
$pos = $tab->pos($pos);
Arguments
Returns
Integer
Description
Liefere die Position der Kolumne $column in den Zeilen-Arrays. Die Position ist 0-basiert. Ist das Argument eine Zahl (Position), liefere diese unverändert zurück.
properties() - Eigenschaften einer Kolumne
Synopsis
$prp = $tab->properties($pos);
$prp = $tab->properties($column);
Arguments
Returns
Properties-Objekt (Quiq::Properties)
Description
Ermittele die Eigenschaften der Werte der Kolumne $column und liefere ein Objekt, das diese Eigenschaften abfragbar zur Verfügung stellt, zurück. Die Eigenschaften werden gecacht, so dass bei einem wiederholten Aufruf die Eigenschaften nicht erneut ermittelt werden müssen. Wird die Tabelle mit push() erweitert, wird der Cache automatisch gelöscht.
push() - Füge Zeile hinzu
Synopsis
$tab->push(\@arr);
Arguments
Description
Füge eine Zeile mit den Kolumnenwerten @arr zur Tabelle hinzu. Die Anzahl der Elemente in @arr muss mit der Anzahl der Kolumnen übereinstimmen, sonst wird eine Exception geworfen. Durch das Hinzufügen einer Zeile werden die gecachten Kolumneneigenschaften - sofern vorhanden - gelöscht (siehe Methode properties()).
rows() - Liste der Zeilen
Synopsis
@rows | $rowA = $tab->rows;
Returns
Liste der Zeilen (Objekte der Klasse Quiq::TableRow). Im Skalarkontext eine Referenz auf die Liste.
Description
Liefere die Liste der Zeilen der Tabelle.
values() - Werte einer Kolumne
Synopsis
@values | $valueA = $tab->values($pos,@opt);
@values | $valueA = $tab->values($column,@opt);
Arguments
Options
Returns
Liste der Werte (Strings). Im Skalarkontext eine Referenz auf die Liste.
Description
Liefere die Liste der Werte der Kolumne $column. Per Default wird die Liste aller Werte geliefert, auch wenn sie mehrfach vorkommen. Siehe auch Option -distinct
.
width() - Anzahl der Kolumnen
Synopsis
$width = $tab->width;
Returns
Integer
Description
Liefere die Anzahl der Kolumnen der Tabelle.
Formatierung
asText() - Tabelle als Text
Synopsis
$text = $tab->asText(@opt);
Options
- -colorize => $sub
-
Callback-Funktion, die für jede Zelle gerufen wird und eine Termnal-Farbe für die jeweilige Zelle liefert. Die Funktion hat die Struktur:
sub { my ($tab,$row,$pos,$val) = @_; ... return $color; }
Die Terminal-Farbe ist eine Zeichenkette, wie sie Quiq::AnsiColor erwartet. Anwendungsbeispiel siehe quiq-ls.
Returns
Text-Tabelle (String)
VERSION
1.184
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2020 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.