=head1 VERSION
-Version 0.03
+Version 0.06
=cut
-our $VERSION = '0.03';
+our $VERSION = '0.06';
=head1 SYNOPSIS
=head1 METHODS
-=head2 C<< new [ done => $cb ] >>
+=head2 C<< new < done => $cb > >>
L<Bit::MorseSignals::Receiver> object constructor. With the C<'done'> option, you can specify a callback that will be triggered every time a message is completed, and in which C<$_[0]> will be the receiver object and C<$_[1]> the message received.
sub new {
my $class = shift;
- $class = ref $class || $class || return;
+ return unless $class = ref $class || $class;
croak 'Optional arguments must be passed as key => value pairs' if @_ % 2;
my %opts = @_;
my $self = {
my @demanglers = (sub { $_[0] }, \&decode_utf8, \&thaw );
# BM_DATA_{PLAIN, UTF8, STORABLE}
$self->{msg} = defined $demanglers[$self->{type}]
- ? $demanglers[$self->{type}]->($self->{buf})
+ ? do {
+ local $SIG{__DIE__} = sub { warn @_ };
+ $demanglers[$self->{type}]->($self->{buf})
+ }
: $self->{buf};
$self->reset;
$self->{done}->($self, $self->{msg}) if $self->{done};
vec($self->{buf}, $self->{len}++, 1) = $bit;
if ($self->{len} >= 3) {
- my $type = 2 * vec($self->{buf}, 0, 1)
- + vec($self->{buf}, 1, 1);
+ my $type = 2 * vec($self->{buf}, 1, 1)
+ + vec($self->{buf}, 0, 1);
$type = BM_DATA_PLAIN if vec($self->{buf}, 2, 1);
@{$self}{qw/state type buf len/} = (3, $type, '', 0);
}
Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
-You can contact me by mail or on #perl @ FreeNode (vincent or Prof_Vince).
+You can contact me by mail or on C<irc.perl.org> (vincent).
=head1 BUGS
perldoc Bit::MorseSignals::Receiver
+Tests code coverage report is available at L<http://www.profvince.com/perl/cover/Bit-MorseSignals>.
+
=head1 COPYRIGHT & LICENSE
Copyright 2008 Vincent Pit, all rights reserved.