Message-String
view release on metacpan or search on metacpan
lib/Message/String.pm view on Meta::CPAN
my $this_arg = shift( @args );
my $ref_type = reftype( $this_arg );
if ( $ref_type ) {
if ( $ref_type eq 'HASH' ) {
push @messages, __PACKAGE__->_new_from_hashref( $this_arg );
}
elsif ( $ref_type eq 'ARRAY' ) {
push @messages, __PACKAGE__->_new_from_arrayref( $this_arg );
}
else {
C_EXPECT_HAREF_OR_KVPL;
}
$package->_export_messages(
{ namespace => $caller,
messages => \@messages,
export_tags => \@tags,
export_ok => $export_ok,
export => $export,
}
) if @messages;
@tags = ();
@messages = ();
undef $export;
undef $export_ok;
}
else {
if ( $this_arg eq 'EXPORT' ) {
if ( @messages ) {
$package->_export_messages(
{ namespace => $caller,
messages => \@messages,
export_tags => \@tags,
export_ok => $export_ok,
export => $export,
}
);
@messages = ();
@tags = ();
}
$export = 1;
undef $export_ok;
}
elsif ( $this_arg eq 'EXPORT_OK' ) {
if ( @messages ) {
$package->_export_messages(
{ namespace => $caller,
messages => \@messages,
export_tags => \@tags,
export_ok => $export_ok,
export => $export,
}
);
@messages = ();
@tags = ();
}
$export_ok = 1;
undef $export;
}
elsif ( substr( $this_arg, 0, 1 ) eq ':' ) {
( my $tag = substr( $this_arg, 1 ) ) =~ s/(?:^\s+|\s+$)//;
my @new_tags = split m{\s*[,]?\s*[:]}, $tag;
push @tags, @new_tags;
$package->_export_messages(
{ namespace => $caller,
messages => \@messages,
export_tags => \@tags,
export_ok => $export_ok,
export => $export,
}
) if @messages;
@messages = ();
$export_ok = 1;
undef $export;
}
else {
if ( @args ) {
push @messages, __PACKAGE__->_new( $this_arg, shift( @args ) );
}
else {
push @messages, __PACKAGE__->_new_from_string( $this_arg );
}
}
} ## end else [ if ( $ref_type ) ]
} ## end while ( @args )
if ( @messages ) {
$package->_export_messages(
{ namespace => $caller,
messages => \@messages,
export_tags => \@tags,
export_ok => $export_ok,
export => $export,
}
);
}
} ## end if ( @args )
return $package;
} ## end sub import
use message {
C_EXPECT_HAREF_OR_KVPL =>
'Expected list of name-value pairs, or reference to an ARRAY or HASH of the same',
C_BAD_MESSAGE_ID => 'Message identifier "%s" is invalid',
C_MISSING_TEMPLATE => 'Message with identifier "%s" has no template'
};
1;
=pod
=encoding utf8
=head1 NAME
Message::String - A pragma to declare and organise messaging.
=head1 VERSION
version 0.1.9
=head1 SYNOPSIS
( run in 2.231 seconds using v1.01-cache-2.11-cpan-71847e10f99 )