36 | 36 |
|
37 | 37 |
package AtteanX::Serializer::TextTable 0.028 {
|
38 | 38 |
use Moo;
|
39 | |
use Types::Standard qw(Str ArrayRef);
|
|
39 |
use Types::Standard qw(Str Bool ArrayRef);
|
40 | 40 |
use Encode qw(encode);
|
41 | 41 |
use Scalar::Util qw(blessed);
|
42 | 42 |
use Attean::ListIterator;
|
|
46 | 46 |
|
47 | 47 |
my @rule = qw(- +);
|
48 | 48 |
has 'canonical_media_type' => (is => 'ro', isa => Str, init_arg => undef, default => 'text/plain');
|
|
49 |
has 'number_rows' => (is => 'rw', isa => Bool, default => 0);
|
49 | 50 |
|
50 | 51 |
=item C<< media_types >>
|
51 | 52 |
|
|
85 | 86 |
} else {
|
86 | 87 |
@vars = qw(subject predicate object graph);
|
87 | 88 |
}
|
88 | |
|
|
89 |
|
|
90 |
my @header_names = @vars;
|
|
91 |
if ($self->number_rows) {
|
|
92 |
unshift(@header_names, '#');
|
|
93 |
}
|
|
94 |
|
89 | 95 |
my @headers = (\q"| ");
|
90 | |
push(@headers, map { $_ => \q" | " } @vars);
|
|
96 |
push(@headers, map { $_ => \q" | " } @header_names);
|
91 | 97 |
pop @headers;
|
92 | 98 |
push @headers => (\q" |");
|
93 | 99 |
|
|
95 | 101 |
|
96 | 102 |
my @rule = qw(- +);
|
97 | 103 |
my @rows;
|
|
104 |
my $row = 1;
|
98 | 105 |
while (my $t = $iter->next()) {
|
99 | 106 |
my @strings = map { blessed($_) ? $_->as_string : '' } map { eval { $t->value($_) } } @vars;
|
|
107 |
if ($self->number_rows) {
|
|
108 |
unshift(@strings, $row++);
|
|
109 |
}
|
100 | 110 |
push(@rows, \@strings);
|
101 | 111 |
}
|
102 | 112 |
$table->load(@rows);
|
|
123 | 133 |
my $iter = shift;
|
124 | 134 |
|
125 | 135 |
my @vars = @{ $iter->variables };
|
126 | |
|
|
136 |
my @header_names = @vars;
|
|
137 |
if ($self->number_rows) {
|
|
138 |
unshift(@header_names, '#');
|
|
139 |
}
|
127 | 140 |
|
128 | 141 |
my @headers = (\q"| ");
|
129 | |
push(@headers, map { $_ => \q" | " } @vars);
|
|
142 |
push(@headers, map { $_ => \q" | " } @header_names);
|
130 | 143 |
pop @headers;
|
131 | 144 |
push @headers => (\q" |");
|
132 | 145 |
|
133 | 146 |
my $table = Text::Table->new(@headers);
|
134 | 147 |
|
135 | 148 |
my @rows;
|
|
149 |
my $row = 1;
|
136 | 150 |
while (my $t = $iter->next()) {
|
137 | 151 |
my @strings = map { blessed($_) ? $_->ntriples_string : '' } map { $t->value($_) } @vars;
|
|
152 |
if ($self->number_rows) {
|
|
153 |
unshift(@strings, $row++);
|
|
154 |
}
|
138 | 155 |
push(@rows, \@strings);
|
139 | 156 |
}
|
140 | 157 |
$table->load(@rows);
|