The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use 5.006;
use strict;
our $VERSION = '1.001002';
our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY
# ABSTRACT: Simple utilities for File::ShareDir testing
use Exporter 5.57 qw(import);
use Carp qw( croak );
our @EXPORT_OK = qw( extract_dashes );
sub extract_dashes {
my ( $undashed_to, $source ) = @_;
if ( not ref $source or 'HASH' ne ref $source ) {
return croak(q[Must pass a hashref]);
}
my %input_config = %{$source};
my $params = {};
for my $key ( keys %input_config ) {
next unless $key =~ /\A-(.*)\z/msx;
$params->{$1} = delete $input_config{$key};
}
$params->{$undashed_to} = {} if not exists $params->{$undashed_to};
for my $key ( keys %input_config ) {
$params->{$undashed_to}->{$key} = $input_config{$key};
}
return $params;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Test::File::ShareDir::Utils - Simple utilities for File::ShareDir testing
=head1 VERSION
version 1.001002
=head1 SYNOPSIS
use Test::File::ShareDir::Utils qw( extract_dashes );
my $hash = extract_dashes('dists', $oldhash );
=head1 EXPORTABLE FUNCTIONS
=head2 extract_dashes
A utility that helps transform:
-opt_a => bar
-opt_b => baz
NameA => NameAValue
NameB => NameBValue
Into
opt_a => bar
opt_b => baz
modules => {
NameA => NameAValue
NameB => NameBValue
}
This is a useful approach used all over import and functional style interfaces due to explicit configuration
being needed only on rare occasions.
=head1 AUTHOR
Kent Fredric <kentnl@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kent Fredric <kentnl@cpan.org>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut