XML::ASX::Repeat - Repeat a block of XML::ASX::Entry


XML-ASX documentation Contained in the XML-ASX distribution.

Index


Code Index:

NAME

Top

XML::ASX::Repeat - Repeat a block of XML::ASX::Entry

SYNOPSIS

Top

  use XML::ASX::Repeat;
  my $repeat = XML::ASX::Repeat->new;
  $repeat->count(3);
  $ent1 = $repeat->add_entry;
  $ent->url('http://www.com/1.asf');
  $ent1 = $repeat->add_entry;
  $ent->url('http://www.com/2.asf');
  print $repeat;

DESCRIPTION

Top

The Repeat tag is parented by the ASX tag and can contain ENTRY tags. The effect is to cause the contained ENTRYs to be repeated (collated) the number of times specified by the COUNT attribute of the Repeat tag.

The code snippet from the synopsis will produce this:

  <Repeat COUNT="3">
    <Entry><Ref href="http://www.com/1.asf"></Entry>
    <Entry><Ref href="http://www.com/2.asf"></Entry>
  </Repeat>

METHODS

Top

ACCESSORS

count() - how many times should the block be repeated?

AUTHOR

Top

Allen Day, <allenday@ucla.edu>

SEE ALSO

Top

Video::Info


XML-ASX documentation Contained in the XML-ASX distribution.

package XML::ASX::Repeat;

use strict;
use vars qw($VERSION $AUTOLOAD @ISA);

@ISA = qw(XML::ASX);

use XML::ASX::Entry;

use overload '""' => \&xml;

$VERSION = '0.01';

my %RW_SLOTS = (
			   count => '1',
			  );

sub AUTOLOAD {
	my $self = shift;
	my $param = $AUTOLOAD;
	$param =~ s/.*:://;
	die(__PACKAGE__." doesn't implement $param") unless defined($RW_SLOTS{$param});
	$self->{$param} = shift if @_;
	return $self->{$param};
}

sub new {
	my $class = shift;
	my %param = @_;
	my $self = bless {}, $class;

	$self->$_($RW_SLOTS{$_}) foreach keys %RW_SLOTS;
	$self->$_($param{$_}) foreach keys %param;

	return $self;
}

sub add_entry {
	my $self = shift;
	my $entry = shift || XML::ASX::Entry->new;
	push @{$self->{entries}}, $entry;

	return $self->{entries}->[scalar @{$self->{entries}} - 1];
}

sub each_entry {
	my $self = shift;
	return $self->{entries} ? @{$self->{entries}} : ();
}

sub xml {
	my $self = shift;

	my $content = join '', ($self->each_entry);

	return $self->entag('Repeat',$content,{COUNT=>$self->count});
}

1;
__END__
# Below is stub documentation for your module. You better edit it!