Gnuplot-Builder
view release on metacpan or search on metacpan
lib/Gnuplot/Builder/Script.pm view on Meta::CPAN
package Gnuplot::Builder::Script;
use strict;
use warnings;
use Gnuplot::Builder::PrototypedData;
use Gnuplot::Builder::Util qw(quote_gnuplot_str);
use Gnuplot::Builder::Process;
use Scalar::Util qw(weaken blessed refaddr);
use Carp;
use overload '""' => "to_string";
sub new {
my ($class, @set_args) = @_;
my $self = bless {
pdata => undef,
parent => undef,
};
$self->_init_pdata();
if(@set_args) {
$self->set(@set_args);
}
return $self;
}
sub _init_pdata {
my ($self) = @_;
weaken $self;
$self->{pdata} = Gnuplot::Builder::PrototypedData->new(
entry_evaluator => sub {
my ($key, $value_code) = @_;
if(defined($key)) {
return $value_code->($self, substr($key, 1));
}else {
return $value_code->($self);
}
}
);
}
sub add {
my ($self, @sentences) = @_;
foreach my $sentence (@sentences) {
$self->{pdata}->add_entry($sentence);
}
return $self;
}
sub _set_entry {
my ($self, $prefix, $quote, @pairs) = @_;
$self->{pdata}->set_entry(
entries => \@pairs,
key_prefix => $prefix,
quote => $quote,
);
return $self;
}
sub set {
my ($self, @pairs) = @_;
return $self->_set_entry("o", 0, @pairs);
}
*set_option = *set;
sub setq {
my ($self, @pairs) = @_;
return $self->_set_entry("o", 1, @pairs);
}
*setq_option = *setq;
sub unset {
my ($self, @names) = @_;
return $self->set(map { $_ => undef } @names);
}
sub _get_entry {
my ($self, $prefix, $name) = @_;
croak "name cannot be undef" if not defined $name;
return $self->{pdata}->get_resolved_entry("$prefix$name");
}
sub get_option {
my ($self, $name) = @_;
return $self->_get_entry("o", $name);
}
( run in 1.037 second using v1.01-cache-2.11-cpan-39bf76dae61 )