use strict; package XML::XBEL::Bookmark; use base qw (XML::XBEL::thingy XML::XBEL::item XML::XBEL::url XML::XBEL::node XML::XBEL::serialize); # $Id: Bookmark.pm,v 1.4 2004/06/23 06:23:57 asc Exp $ =head1 NAME XML::XBEL::Bookmark - OOP for reading and writing XBEL bookmarks. =head1 SYNOPSIS use XML::XBEL::Bookmark; =head1 DESCRIPTION OOP for reading and writing XBEL bookmarks. =cut use XML::LibXML; =head1 PACKAGE METHODS =cut =head2 __PACKAGE__->new(\%args) Valid args are: =over 4 =item * B String. =item * B<href> String. =item * B<id> String. =item * B<desc> String. =item * B<added> String. =item * B<modified> String. =item * B<visited> String. =item * B<info> Hash ref, with the following key/value pairs : =over 6 =item * I<owner> Array ref. =back =back Returns a I<XML::XBEL::Bookmark> object. =cut sub new { my $pkg = shift; my $args = shift; my $root = XML::LibXML::Element->new("bookmark"); my $self = bless {'__root' => $root }, $pkg; foreach my $el ("title","href","id","desc","added","info","modified","visited") { if (! exists($args->{$el})) { next; } $self->$el($args->{$el}); } if (! $self->added()) { $self->added($self->_now()); } return $self; } =head1 OBJECT METHODS =cut =head2 $obj->href(href) Get/set the href attribute for an XBEL bookmark. If modified, the object's I<modified> method is automatically called with the current datetime. =cut sub href { my $self = shift; my $href = shift; if (defined($href)) { $self->modified($self->_now()); } return $self->SUPER::href($href); } =head2 $obj->title($title) Get/set the title for an XBEL bookmark. If modified, the object's I<modified> method is automatically called with the current datetime. Returns a string when called with no arguments; otherwise returns true or false. =cut sub title { my $self = shift; my $title = shift; if (defined($title)) { $self->modified($self->_now()); } return $self->SUPER::title($title); } =head2 $obj->desc($description) Get/set the description for an XBEL bookmark. If modified, the object's I<modified> method is automatically called with the current datetime. Returns a string when called with no arguments; otherwise returns true or false. =cut # Defined in XML::XBEL::item =head2 $obj->info(\%args) Get/set the metadata for an XBEL document. Valid args are : =over 4 =item * B<owner> Array reference =back Returns an array reference when called with no arguments; otherwise returns true or false. =cut =head2 $obj->id($id) Get/set the id attribute for an XBEL bookmark. If modified, the object's I<modified> method is automatically called with the current datetime. Returns a string when called with no arguments; otherwise returns true or false. =cut sub id { my $self = shift; my $id = shift; if (defined($id)) { $self->modified($self->_now()); } return $self->SUPER::id($id); } =head2 $obj->added($datetime) Get/set the creation datetime for an XBEL bookmark. Returns a string when called with no arguments; otherwise returns true or false. =cut # Defined in XML::XBEL::node =head2 $obj->modified($datetime) Get/set the last modified datetime for an XBEL bookmark. Returns a string when called with no arguments; otherwise returns true or false. =cut # Defined in XML::XBEL::url =head2 $obj->visited($datetime) Get/set the last visited datetime for an XBEL bookmark. Returns a string when called with no arguments; otherwise returns true or false. =cut # Defined in XML::XBEL::url =head2 $obj->toString($format) =cut # Defined in XML::XBEL::serialize =head2 $obj->toFile($filename,$format) =cut # Defined in XML::XBEL::serialize =head2 $obj->toFH(\*$fh,$format) =cut # Defined in XML::XBEL::serialize =head1 VERSION $Revision: 1.4 $ =head1 DATE $Date: 2004/06/23 06:23:57 $ =head1 AUTHOR Aaron Straup Cope E<lt>ascope@cpan.orgE<gt> =head1 SEE ALSO L<XML::XBEL> L<XML::XBEL::Folder> L<XML::XBEL::Alias> L<XML::XBEL::Separator> =head1 LICENSE Copyright (c) 2004 Aaron Straup Cope. All rights reserved. This is free software, you may use it and distribute it under the same terms as Perl itself. =cut return 1;