App-CSV2Chart

 view release on metacpan or  search on metacpan

lib/App/CSV2Chart/Command/svg.pm  view on Meta::CPAN

package App::CSV2Chart::Command::svg;
$App::CSV2Chart::Command::svg::VERSION = '0.12.0';
use strict;
use warnings;
use 5.014;

use App::CSV2Chart -command;
use App::CSV2Chart::API::ToXLSX ();

use Path::Tiny qw/ path tempdir tempfile cwd /;

sub description
{
    return "Generate .svg";
}

sub abstract
{
    return shift->description();
}

sub opt_spec
{
    return @{ App::CSV2Chart::API::ToXLSX::_to_xlsx_common_opt_spec() };
}

sub execute
{
    my ( $self, $opt, $args ) = @_;

    my $output_fn = delete $opt->{output};
    my $exe       = delete( $opt->{exec} ) // [];

    my $fh = \*STDIN;

    my $dir = tempdir();

    if ( "$dir" =~ /%/ )
    {
        die "Invalid dir path $dir contains percent signs";
    }

    my $xlsx = $dir->child("temp.xlsx");

    App::CSV2Chart::API::ToXLSX::csv_to_xlsx(
        {
            input_fh  => $fh,
            output_fn => "$xlsx",
            %$opt,
        }
    );

    my $svg_fn = $dir->child("out%.svg");
    if (
        system(
            "ssconvert", "--export-graphs",
            "$xlsx", ( "$svg_fn" =~ s/%/%%/r )
        )
        )
    {
        die "ssconvert failed";
    }

    # Use ->copy instead of ->move because rename does
    # not handle cross-partition moves.
    $svg_fn->copy($output_fn);

    if (@$exe)
    {
        system( @$exe, $output_fn );
    }

    return;
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

csv2chart svg - generate an .svg file of a chart from CSV data (requires a recent version of
gnumeric's ssconvert utility).

=head1 VERSION

version 0.12.0

=for :stopwords cpan testmatrix url bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan

=head1 SUPPORT

=head2 Websites

The following websites have more information about this module, and may be of help to you. As always,
in addition to those websites please use your favorite search engine to discover more resources.



( run in 1.808 second using v1.01-cache-2.11-cpan-39bf76dae61 )