NAME
Time::Frame - objects to store a length of time
VERSION
This documention refers to version 1.0.3CCA3bG of
Time::Frame, which was released on Fri Dec 12 10:03:37:16 2003.
SYNOPSIS
use Time::Frame;
my $f = Time::Frame->new('verbose' => '2 weeks');
print 'Number of days is ', $f->day(), "\n";
DESCRIPTION
This module has been adapted from the Time::Seconds module
written by Matt Sergeant <matt@sergeant.org> && Jarkko
Hietaniemi <jhi@iki.fi>. Time::Frame inherits base
data structure && object methods from Time::Fields.
Frame was written to simplify storage && calculation
of encoded, yet distinct && human-readable, time data
objects.
The title of this Perl module has dual meaning. Frame
means both the span of time the whole object represents
as well as the (default) smallest unit of measurement.
2DO
better ways to specify common verbose sizes
What else does Frame need?
WHY?
The reason I created Frame was that I have grown so enamored with
Bass64 representations of everything around me that I was
compelled to write a simple clock utility ( `pt` ) using Bass64.
This demonstrated the benefit to be gained from time objects with
distinct fields && configurable precision. Thus, Time::Fields
was written to be the abstract base class for:
Time::Frame ( creates objects which represent spans of time )
&&
Time::PT ( creates objects which represent instants in time )
USAGE
Many of Time::Frame's methods have been patterned after the excellent
Time::Piece module written by Matt Sergeant <matt@sergeant.org>
&& Jarkko Hietaniemi <jhi@iki.fi>.
new(<InitType>, <InitData>) - Time::Frame's constructor can be called
as a class method to create a brand new object or as an object
method to copy an existing object. Beyond that, new() can
initialize Frame objects 3 different ways:
-1) <packedB64InitStringImplies'str'>
eg. Time::Frame->new('0123456789');
0) 'str' => <packedB64InitString>
eg. Time::Frame->new('str' => '0A1B2C3D4E');
1) 'list' => <arrayRef>
eg. Time::Frame->new('list' => [0, 1, 2..9]);
2) 'hash' => <hashRef>
eg. Time::Frame->new('hash' => {'jink' => 8, 'year' => 2003})
color(<DestinationColorTypeFormat>) - This is an object member
which will join bass64 representations of each field that has
been specified in use() && joins them with color-codes or color
escape sequences with formats for varied uses. Currently
available DestinationColorTypeFormats are:
'ANSI' # eg. \e[1;32m
'zsh' # eg. %{\e[1;33m%}
'HTML' # eg. <a href="http://Ax9.org/pt?"><font color="#FF1B2B">
'Simp' # eg. RbobYbGbCbUbPb
The following methods allow access to individual fields of
Time::Frame objects:
$t->C or $t->century
$t->Y or $t->year
$t->M or $t->month
$t->D or $t->day
$t->h or $t->hour
$t->m or $t->minute
$t->s or $t->second
$t->f or $t->frame
$t->j or $t->jink
$t->z or $t->zone
Any combination of above single letters can be used as well.
Following are some common useful examples:
$t->hms # returns list of fields eg. [12, 34, 56]
$t->hms(12, 56, 34) # sets fields: h = 12, m = 56, s = 34
$t->hmsf # [12, 34, 56, 12]
$t->hmsfj # [12, 34, 56, 12, 34]
$t->hmsfjz # [12, 34, 56, 12, 34, 16]
$t->time # same as $t->hms
$t->alltime # same as $t->hmsfjz
$t->YMD # [2000, 2, 29]
$t->MDY # [ 2, 29, 2000]
$t->DMY # [ 29, 2, 2000]
$t->CYMD # [ 20, 0, 2, 29]
$t->date # same as $t->YMD
$t->alldate # same as $t->CYMD
$t->CYMDhmsfjz # [ 20, 0, 2, 29, 12, 13, 56, 12, 13, 16]
$t->all # same as $t->CYMDhmsfjz
$t->dt # same as $t->CYMDhmsfjz
"$t" # same as $t->CYMDhmsfjz
Method names can be in any case with the following exceptions.
Special handling exists to resolve ambiguity between the Month &&
minute fields. If a lowercase 'm' is used adjacent to a 'y' or 'd'
of either case, it is interpreted as Month. Otherwise, the case of
the 'm' distinguishes Month from minute. An uppercase 'M' is ALWAYS
Month. An adjacent uppercase 'H' or 'S' will not turn an uppercase
'M' into minute. Method names which need to specify Month or minute
fields can also optionally specify the distinguishing vowel
('o' or 'i') instead of 'M' or 'm'.
$t->ymd # same as $t->YMD
$t->dmy # same as $t->DMY
$t->MmMm # Month minute Month minute
$t->HMS # hour Month second! NOT same as $t->hms
$t->yod # same as $t->YMD
$t->chmod # Century hour minute Month Day
$t->FooIsMyJoy # frame Month Month minute second Month Year
# jink Month Year
NOTES
Whenever individual Time::Frame attributes are going to be
printed or an entire object can be printed with multi-colors,
the following mapping should be employed whenever possible:
D Century -> DarkRed
A Year -> Red
T Month -> Orange
E Day -> Yellow
hour -> Green
t minute -> Cyan
i second -> Blue
m frame -> Purple
e jink -> DarkPurple
zone -> Grey or White
Please see the color() member function in the USAGE section.
I hope you find Time::Frame useful. Please feel free to e-mail me
any suggestions || coding tips || notes of appreciation
("app-ree-see-ay-shun"). Thank you. TTFN.
CHANGES
Revision history for Perl extension Time::Frame:
- - 1.0.3CCA3bG Fri Dec 12 10:03:37:16 2003
-
* removed indenting from POD NAME field
- - 1.0.3CB7RLu Thu Dec 11 07:27:21:56 2003
-
* added HTML color option && prepared for release
- - 1.0.3CA8thM Wed Dec 10 08:55:43:22 2003
-
* built class to inherit from Time::Fields
- - 1.0.37VG26k Thu Jul 31 16:02:06:46 2003
-
* original version
INSTALL
Please run:
`perl -MCPAN -e "install Time::Frame"`
or uncompress the package && run the standard:
`perl Makefile.PL; make; make test; make install`
FILES
Time::Frame requires:
Carp to allow errors to croak() from calling sub
Math::BaseCnv to handle number-bass conversion
Time::Fields to provide underlying object structure
SEE ALSO
Time::PT
LICENSE
Most source code should be Free!
Code I have lawful authority over is && shall be!
Copyright: (c) 2003, Pip Stuart. All rights reserved.
Copyleft : I license this software under the GNU General Public
License (version 2). Please consult the Free Software Foundation
(http://www.fsf.org) for important information about your freedom.
AUTHOR
Pip Stuart <Pip@CPAN.org>