package SL::ReportGenerator;
use Data::Dumper;
-use IO::Wrap;
use List::Util qw(max);
use Text::CSV_XS;
#use PDF::API2; # these two eat up to .75s on startup. only load them if we actually need them
}
sub unescape_string {
- my $self = shift;
- my $text = shift;
+ my ($self, $text, $do_iconv) = @_;
- $text = $main::locale->unquote_special_chars('HTML', $text);
- $text = $::locale->{iconv}->convert($text);
+ $text = $main::locale->unquote_special_chars('HTML', $text);
+ $text = $::locale->{iconv}->convert($text) if $do_iconv;
return $text;
}
'quote_char' => $quote_char,
'eol' => $eol, });
- my $stdout = wraphandle(\*STDOUT);
my @visible_columns = $self->get_visible_columns('CSV');
+ my $stdout;
+ open $stdout, '>-';
+ binmode $stdout, ':encoding(utf8)' if $::locale->is_utf8;
+
if ($opts->{headers}) {
if (!$self->{custom_headers}) {
- $csv->print($stdout, [ map { $self->unescape_string($self->{columns}->{$_}->{text}) } @visible_columns ]);
+ $csv->print($stdout, [ map { $self->unescape_string($self->{columns}->{$_}->{text}, 1) } @visible_columns ]);
} else {
foreach my $row (@{ $self->{custom_headers} }) {