Changeset 503 for cybozu2ical/trunk/lib

Show
Ignore:
Timestamp:
08/28/08 01:56:21 (4 months ago)
Author:
ogawa
Message:

Stop using Class::Accessor::Fast.
Support recurrent events for Cybozu Office 7.

Location:
cybozu2ical/trunk/lib/WWW
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • cybozu2ical/trunk/lib/WWW/CybozuOffice6/Calendar.pm

    r502 r503  
    44use strict; 
    55use warnings; 
    6  
    7 use base qw( Class::Accessor::Fast ); 
    86 
    97use Carp; 
     
    2321} 
    2422 
    25 __PACKAGE__->mk_accessors(qw( url host username userid password ua input_encoding )); 
     23sub url                 { shift->_accessor('url',               @_) } 
     24sub host                { shift->_accessor('host',              @_) } 
     25sub username            { shift->_accessor('username',          @_) } 
     26sub userid              { shift->_accessor('userid',            @_) } 
     27sub password            { shift->_accessor('password',          @_) } 
     28sub ua                  { shift->_accessor('ua',                @_) } 
     29sub input_encoding      { shift->_accessor('input_encoding',    @_) } 
     30sub _accessor { 
     31    my $this = shift; 
     32    my $key = shift; 
     33    $this->{$key} = shift if @_; 
     34    $this->{$key}; 
     35} 
    2636 
    2737sub request { 
     
    138148package WWW::CybozuOffice6::Calendar::Event; 
    139149 
    140 use base qw( Class::Accessor::Fast ); 
    141  
    142150sub new { 
    143151    my $class = shift; 
     
    151159} 
    152160 
    153 __PACKAGE__->mk_accessors(qw( id start end summary description created modified is_full_day comment )); 
     161sub id          { shift->_accessor('id',                @_) } 
     162sub start       { shift->_accessor('start',             @_) } 
     163sub end         { shift->_accessor('end',               @_) } 
     164sub summary     { shift->_accessor('summary',           @_) } 
     165sub description { shift->_accessor('description',       @_) } 
     166sub created     { shift->_accessor('created',           @_) } 
     167sub modified    { shift->_accessor('modified',          @_) } 
     168sub is_full_day { shift->_accessor('is_full_day',       @_) } 
     169sub comment     { shift->_accessor('comment',           @_) } 
     170sub _accessor { 
     171    my $this = shift; 
     172    my $key = shift; 
     173    $this->{$key} = shift if @_; 
     174    $this->{$key}; 
     175} 
    154176 
    155177sub parse { 
     
    207229package WWW::CybozuOffice6::Calendar::RecurrentEvent; 
    208230 
    209 use base qw( Class::Accessor::Fast WWW::CybozuOffice6::Calendar::Event ); 
    210  
    211 __PACKAGE__->mk_accessors(qw( rrule frequency frequency_value until )); 
     231use base qw( WWW::CybozuOffice6::Calendar::Event ); 
     232 
     233sub rrule               { shift->_accessor('rrule',             @_) } 
     234# for compatibility 
     235sub frequency           { shift->_accessor('frequency',         @_) } 
     236sub frequency_value     { shift->_accessor('frequency_value',   @_) } 
     237sub until               { shift->_accessor('until',             @_) } 
    212238 
    213239sub exdates { 
     
    241267 
    242268    # until 
    243     if ($param{until_date} =~ m!^(\d+)/(\d+)/(\d+)$!) { 
     269    if ($param{until_date} =~ m!^(\d+)/(\d+)/(\d+)$! || $param{until_date} =~ m!^da\.(\d+)\.(\d+)\.(\d+)$!) { 
    244270        my %args = (year => $1, month => $2, day => $3); 
    245271        my $until; 
  • cybozu2ical/trunk/lib/WWW/CybozuOffice7/Calendar.pm

    r502 r503  
    105105 
    106106        my %param; 
    107         @param{qw(id created start_date end_date start_time end_time abbrev summary description)} = @fields[0,1,8..11,12..14]; 
     107        @param{qw(id created freq freq_value start_date end_date start_time end_time abbrev summary description)} = @fields[0,1,4,5,8..11,12..14]; 
    108108 
    109109        $param{time_zone} = $this->{time_zone} || 'Asia/Tokyo'; 
    110110 
    111         my $item = WWW::CybozuOffice6::Calendar::Event->new(%param); 
     111        my $item; 
     112        if (!$param{freq}) { 
     113            $item = WWW::CybozuOffice6::Calendar::Event->new(%param); 
     114        } 
     115        else { 
     116            @param{qw(end_date until_date)} = @fields[8,9]; 
     117            if ($num_fields > 14) { 
     118                my @exdates = @fields[14..$num_fields]; 
     119                $param{exdates} = \@exdates; 
     120            } 
     121            my $freq = $param{freq}; 
     122            if ($freq =~ /^[1-5]$/) { 
     123                $param{freq} = 'm'; 
     124                my @week_str = ('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'); 
     125                $param{freq_value} = $freq . $week_str[$param{freq_value}]; 
     126            } 
     127            $item = WWW::CybozuOffice6::Calendar::RecurrentEvent->new(%param); 
     128        } 
    112129 
    113130        next unless $item;