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 )