CXC-Gnuplot
view release on metacpan or search on metacpan
lib/CXC/Gnuplot/V1/Util.pm view on Meta::CPAN
package CXC::Gnuplot::V1::Util;
use v5.38;
our $VERSION = 'v0.29.3';
use experimental 'declared_refs', 'for_list', 'builtin', 'try';
use Exporter::Shiny
'flatten_array',
'render_set',
'gnuplot_color',
'gnuplot_color_names',
'maybe_quote',
'pvalidate',
'pvalidate_xy_pair',
'quote',
'render_opts',
'to_hash_r',
'clone_object',
;
# use namespace::autoclean;
use Hash::Merge;
use Ref::Util 'is_plain_arrayref', 'is_plain_hashref', 'is_plain_ref', 'is_ref', 'is_blessed_ref';
use builtin::compat 'blessed', 'load_module', 'trim', 'is_bool', 'true', 'false';
use CXC::Data::Visitor 'visit', 'VISIT_ALL', 'RESULT_CONTINUE';
use B ();
use constant BASE => __PACKAGE__ =~ s/[^:]+$//r;
my sub croak {
require Carp;
goto \&Carp::croak;
}
my sub rewrite_prefix ( $module ) {
state $root = ( __PACKAGE__ =~ s/::Util//r ) . q{::};
return
defined $module
? substr( $module, 0, 1 ) eq q{+}
? $module
: $root . $module
: undef;
}
# not very efficient
sub flatten_array ( $array ) {
return is_plain_arrayref( $array )
? [ map { is_plain_arrayref( $_ ) ? __SUB__->( $_ )->@* : $_; } $array->@* ]
: [$array];
}
sub render_set( $set, $format ) {
## no critic(NamingConventions::ProhibitAmbiguousNames)
my \@set = $set;
return
$format eq 'array' ? @set
: $format eq 'flatten_array' ? map { flatten_array( $_ ) } @set
: $format eq 'string' ? map { join q{ }, flatten_array( $_ )->@* } @set
: croak( 'unknown format: ' . $format );
}
sub maybe_quote( $str ) {
return $str =~ /^(['"]).*(\1)$/ ? $str : B::cstring( $str );
}
( run in 3.082 seconds using v1.01-cache-2.11-cpan-0fb53d1c279 )