package Penguin::Frame::Data;
$VERSION = "3.0";
sub new {
my ($class, %args) = @_;
my $self = {};
$self->{'Text'} = $args{'Text'};
bless $self, $class;
}
sub assemble {
my ($self, %args) = @_;
$self->{'Text'} =
"%%%delimiter%%%\n" .
pack("u", $args{'Text'}) .
"%%%delimiter%%%\n";
}
sub disassemble {
my ($self, %args) = @_;
my @splitframe = split(/^/, $self->{'Text'});
my $topdelimiter = shift @splitframe;
my $bottomdelimiter = pop @splitframe;
my $wrappedtext = join('', @splitframe) ||
warn("useless frame: empty code.");
if (! ($topdelimiter eq $bottomdelimiter)) {
warn("corrupt frame; unbalanced delimiters.");
return 0;
}
return unpack("u", $wrappedtext);
}
sub contents {
my ($self, %args) = @_;
$self->{'Text'} = $args{'Text'} || $self->{'Text'};
}
sub type {
"Data";
}
syntax highlighted by Code2HTML, v. 0.9.1