use strict;
use warnings;
-use Carp qw/croak/;
-use Encode qw/encode_utf8 is_utf8/;
-use Storable qw/freeze/;
+use Carp qw<croak>;
+use Encode qw<encode_utf8 is_utf8>;
+use Storable qw<freeze>;
-use Bit::MorseSignals qw/:consts/;
+use Bit::MorseSignals qw<:consts>;
=head1 NAME
=head1 VERSION
-Version 0.04
+Version 0.07
=cut
-our $VERSION = '0.04';
+our $VERSION = '0.07';
=head1 SYNOPSIS
use Bit::MorseSignals::Emitter;
- my $deuce = new Bit::MorseSignals::Emitter;
+ my $deuce = Bit::MorseSignals::Emitter->new;
$deuce->post("hlagh") for 1 .. 3;
while (defined(my $bit = $deuce->pop)) {
sends_by_some_mean_lets_say_signals($bit);
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 = {
# BM_DATA_{PLAIN, UTF8, STORABLE}
$type = BM_DATA_AUTO unless defined $type and exists $manglers[$type];
if (ref $msg) {
- return if { map { $_ => 1 } qw/CODE GLOB/ }->{ref $msg};
+ return if { map { $_ => 1 } qw<CODE GLOB> }->{ref $msg};
$type = BM_DATA_STORABLE;
} elsif ($type == BM_DATA_AUTO) {
$type = is_utf8($msg) ? BM_DATA_UTF8 : BM_DATA_PLAIN;
$self->{state} = 2;
my $head = '';
- vec($head, 0, 1) = ($type & 2) >> 1;
- vec($head, 1, 1) = ($type & 1);
+ vec($head, 0, 1) = ($type & 1);
+ vec($head, 1, 1) = ($type & 2) >> 1;
vec($head, 2, 1) = 0;
my $hlen = 3;
return $bit;
}
+=head2 C<len>
+
+The length of the currently posted message.
+
+=cut
+
+sub len {
+ my ($self) = @_;
+ _check_self($self);
+ return $self->{len};
+}
+
+=head2 C<pos>
+
+The number of bits that have already been sent for the current message.
+
+=cut
+
+sub pos {
+ my ($self) = @_;
+ _check_self($self);
+ return $self->{pos};
+}
+
=head2 C<reset>
Cancels the current transfer, but does not empty the queue.
my ($self) = @_;
_check_self($self);
$self->{state} = @{$self->{queue}} > 0;
- @{$self}{qw/buf len pos/} = ();
+ @{$self}{qw<buf len pos>} = ();
return $self;
}
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::Emitter
+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.