Toby Inkster > HTML-Microformats-0.105 > HTML::Microformats::Datatype::Duration

Download:
HTML-Microformats-0.105.tar.gz

Dependencies

Annotate this POD

Website

CPAN RT

Open  2
View/Report Bugs
Module Version: 0.105   Source  

NAME ^

HTML::Microformats::Datatype::Duration - floating periods of time

SYNOPSIS ^

 my $duration = HTML::Microformats::Datatype::Duration->new($d);
 print "$duration\n";

DESCRIPTION ^

Constructors

$d = HTML::Microformats::Datatype::Duration->new($duration)

Creates a new HTML::Microformats::Datatype::Duration object.

$duration is a DateTime::Duration object.

$d = HTML::Microformats::Datatype::Duration->parse($string, $elem, $context)

Creates a new HTML::Microformats::Datatype::Duration object.

$string is a duration represented in ISO 8601 format, for example: 'P1Y' or 'PT2H29M58.682S'. $elem is the XML::LibXML::Element being parsed. $context is the document context.

The standard way of representing durations in Microformats is as an ISO 8601 string:

 <abbr class="duration" title="P4DT4H">4 and a half days</abbr>

This constructor also supports a number of experimental microformat duration patterns. ISO-31 class names are supported:

 <div class="duration">
  <span claa="d">4</span> and
  <abbr title="12" class="h">a half</abbr> days.
 </div>

As are metric/SI measures (in seconds):

 <span class="duration">124 s</span>
 <span class="duration">124</span> seconds

Or using an hMeasure microformat with no 'item' property, the 'type' property either absent or a case-insensitive match of 'duration' and a unit property of 's'/'sec'/'seconds', 'min'/'minutes', 'h'/'hours' or 'd'/'days'. For example:

 <span class="duration hmeasure">
  <b class="unit">Days</b>: <span class="num">4.5</span>
 </span>

Public Methods

$d->duration

Returns a DateTime::Duration object.

$d->to_string

Returns an ISO 8601 formatted string representing the duration.

$d->datatype

Returns an the RDF datatype URI representing the data type of this literal.

Functions

compare($a, $b)

Compares durations $a and $b. Return values are as per 'cmp' (see perlfunc).

Note that there is not always a consistent answer when comparing durations. 30 days is longer than a month in February, but shorter than a month in January. Durations are compared as if they were applied to the current datetime (i.e. now).

This function is not exported by default.

Can also be used as a method:

 $a->compare($b);
$c = add($a, $b)

Adds two durations together.

This function is not exported by default.

Can also be used as a method:

 $c = $a->add($b);
$c = subtract($a, $b)

Subtracts duration $b from $a.

This function is not exported by default.

Can also be used as a method:

 $c = $a->subtract($b);

BUGS ^

Please report any bugs to http://rt.cpan.org/.

SEE ALSO ^

HTML::Microformats, HTML::Microformats::Datatype, DateTime::Duration.

AUTHOR ^

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE ^

Copyright 2008-2012 Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

DISCLAIMER OF WARRANTIES ^

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

syntax highlighting: