Author: wayland
Date: 2009-02-19 08:47:26 +0100 (Thu, 19 Feb 2009)
New Revision: 25405

Modified:
   docs/Perl6/Spec/S32-setting-library/Temporal.pod
Log:
Improved Temporal (previously DateTime) stuff a bit


Modified: docs/Perl6/Spec/S32-setting-library/Temporal.pod
===================================================================
--- docs/Perl6/Spec/S32-setting-library/Temporal.pod    2009-02-19 07:45:07 UTC 
(rev 25404)
+++ docs/Perl6/Spec/S32-setting-library/Temporal.pod    2009-02-19 07:47:26 UTC 
(rev 25405)
@@ -66,35 +66,25 @@
 
 =head1 Roles
 
-=head2 Time and Date roles
+=head2 Temporal::Date
 
-=head3 Date
+You probably want to use the Temporal::Instant object instead.  
 
-You probably want to use the DateTime object instead.  
+role   Temporal::Date {
+       has Int $.year;
+       has Int $.month;
+       has Int $.day; # Day of month
+       has Int $.dayofweek;
+       has Int $.era; # BC, AD, etc, depending on locale
+       has Str $.defaultformat; # A CLDR-formatted string, for use with 
toString();
 
-role   Date {
-       has Calendar $.calendar; # Gregorian, Secular, Julian, etc
-       has NumberName $.year;
-       has NumberName $.month;
-       has NumberName $.dayofmonth;
-       has NumberName $.dayofweek;
-       has NumberName $.dayofyear;
-       has NumberName $.dayofquarter;
-       has NumberName $.quarter;
-       has NumberName $.era; # 'Common', 'Christian', etc
-       has Str $.defaultformat;
+       method  toString($format => $.defaultformat);
 
-       method  toString($format);
-       method  isLeapYear();
+       multi method Temporal::Instant infix:<+>(Temporal::Date $self, 
Temporal::Time $other);
+       multi method Temporal::Instant infix:<+>(Temporal::Date $self, 
Temporal::Duration $other);
 
-       multi method DateTime infix:<+>(Date $self, Time $other);
-       multi method DateTime infix:<+>(Date $self, Duration $other);
-
-       multi method infix:{'<=>'}(Date $self, Date $other);
-       multi method infix:{'<=>'}(Date $self, Duration $other);
-
-       method  get(Str $type, Str $of);
-       method  last(Str $type, Str $of);
+       multi method infix:{'<=>'}(Temporal::Date $self, Temporal::Date $other);
+       multi method infix:{'<=>'}(Temporal::Date $self, Temporal::Duration 
$other);
 }
 
 Example:
@@ -102,15 +92,7 @@
 $date = new Date('2002/01/01');
 $date.month.name(); # January
 $date.month.name('short'); # Jan
-$date.get('day', of => 'year');
 
-$date = new Date('2002/01/01');
-$date.convertcalendar('Chinese');
-$date.year.name(); # Snake
-
-A fair bit of initialisation of the NumberNames for day of the week and month 
will need to 
-be done.  
-
 $format will naturally need to allow for eras.  
 
 =over
@@ -123,60 +105,57 @@
 
 =back
 
-=head3 Time
+=head2 Temporal::Time
 
-You probably want to use the DateTime object instead.  
+You probably want to use the Temporal::Instant object instead.  
 
-role   Time {
+role   Temporal::Time {
        has $.hour;
        has $.minute;
        has $.second;
 
        method  toString($format?);
        # This can't be right; how do we specify this
-       multi method infix:{'<=>'}(Time $self, Time $other);
-       multi method infix:{'<=>'}(Time $self, Duration $other);
+       multi method infix:{'<=>'}(Temporal::Time $self, Temporal::Time $other);
+       multi method infix:{'<=>'}(Temporal::Time $self, Temporal::Duration 
$other);
 }
 
 When created, recognises "today" as a possibility.  
 
-=head1 Classes
-
-=head2 Time and Date classes
-
-=head3 NumberName
-
- class NumberName {
+role   Temporal::Timezone {
        has $.number;
 
-       method  name($format?) {
-               ...
-       }
- }
-
-=head3 Timezone
-
-role Timezone {
-       has $.number;
-
        method name($format);
        method is_dst();
 }
 
-=head3 DateTime
+role   Temporal::Subsecond {
+       has     $.nanosecond;
+}
 
-class  DateTime does Date does Time does Timezone {
+=head1 Classes
+
+=head2 Temporal::Timezone
+
+=head2 Temporal::Instant
+
+class  Temporal::Instant 
+       does Temporal::Date 
+       does Temporal::Time 
+       does Temporal::Timezone 
+       does Temporal::Subsecond
+{
        has $.locale;
        has $.parser;
        has $.formatter; # Only for output formats
 
-       multi method DateTime infix:<+>(DateTime $self, Duration $other);
+       multi method Temporal::Instant infix:<+>(Temporal::Instant $self, 
Duration $other);
 
-       multi method infix:<->(DateTime $self, Duration $other);
-       multi method infix:<->(DateTime $self, Duration $other);
+       multi method infix:<->(Temporal::Instant $self, Duration $other);
+       multi method infix:<->(Temporal::Instant $self, Duration $other);
 
-       multi method infix:{'<=>'}(DateTime $self, DateTime $other);
-       multi method infix:{'<=>'}(DateTime $self, Duration $other);
+       multi method infix:{'<=>'}(Temporal::Instant $self, Temporal::Instant 
$other);
+       multi method infix:{'<=>'}(Temporal::Instant $self, Duration $other);
 
        method  new(:$String);
        method  truncate(Str $to);
@@ -215,13 +194,20 @@
 
 =back
 
-=head3 Duration
+=head2 Temporal::Duration
 
-=head3 Repetition
+class  Temporal::Duration 
+       does Temporal::Date 
+       does Temporal::Time 
+       does Temporal::Subsecond
+{
+}
 
+=head2 Temporal::Recurring
+
 This class specifies when a repetitive action (eg. a cron job) happens.  
 
-class  DateTime::Recurring {
+class  Temporal::Recurring {
 ...
 }
 

Reply via email to