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 )