Show
Ignore:
Timestamp:
12/23/08 03:58:10 (4 years ago)
Author:
lopnor
Message:

refactoring

Location:
lang/perl/Net-Google-Spreadsheets/trunk
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Cell.pm

    r27248 r27255  
    2222after _update_atom => sub { 
    2323    my ($self) = @_; 
    24     my ($elem) = $self->atom->elem->getChildrenByTagNameNS($self->gs->{uri}, 'cell'); 
     24    my ($elem) = $self->atom->elem->getElementsByTagNameNS($self->gs->{uri}, 'cell'); 
    2525    $self->{row} = $elem->getAttribute('row'); 
    2626    $self->{col} = $elem->getAttribute('col'); 
  • lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Row.pm

    r27248 r27255  
    33 
    44extends 'Net::Google::Spreadsheets::Base'; 
     5 
     6has +content => ( 
     7    isa => 'HashRef', 
     8    is => 'rw', 
     9    default => sub { +{} }, 
     10    trigger => sub {$_[0]->update}, 
     11); 
     12 
     13after _update_atom => sub { 
     14    my ($self) = @_; 
     15    for my $node ($self->atom->elem->getElementsByTagNameNS($self->gsx->{uri}, '*')) { 
     16        $self->{content}->{$node->localname} = $node->textContent; 
     17    } 
     18}; 
     19 
     20around entry => sub { 
     21    my ($next, $self) = @_; 
     22    my $entry = $next->($self); 
     23    while (my ($key, $value) = each %{$self->{content}}) { 
     24        $entry->set($self->gsx, $key, $value); 
     25    } 
     26    return $entry; 
     27}; 
    528 
    6291; 
  • lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Spreadsheet.pm

    r27168 r27255  
    99has +title => ( 
    1010    is => 'ro', 
    11 ); 
    12  
    13 has worksheets => ( 
    14     isa => 'ArrayRef[Net::Google::Spreadsheets::Worksheet]', 
    15     is => 'rw', 
    16     weaken => 1, 
    17     default => sub { return [] }, 
    1811); 
    1912 
     
    3326    my ($self) = @_; 
    3427    $self->{content} = $self->atom->content->elem->getAttribute('src'); 
    35     my $feed = $self->service->feed($self->content); 
    36     my @new_ws; 
    37     for my $entry ($feed->entries) { 
    38         my $ws = Net::Google::Spreadsheets::Worksheet->new( 
    39             container => $self, 
    40             atom => $entry, 
    41         ); 
    42         push @new_ws, $ws; 
    43         if (my ($orig) = grep {$_->id eq $ws->id} @{$self->worksheets}) { 
    44             $orig->atom($entry) if $orig->etag ne $ws->etag; 
    45         } else { 
    46             push @{$self->worksheets}, $ws; 
    47         } 
    48     } 
    49     $self->worksheets([ grep {my $ws = $_; grep {$ws->id eq $_->id} @new_ws} @{$self->worksheets} ]); 
    5028}; 
    5129 
     30sub worksheets { 
     31    my ($self, $cond) = @_; 
     32    return $self->list_contents('Net::Google::Spreadsheets::Worksheet', $cond); 
     33} 
    5234 
    5335sub add_worksheet { 
    5436    my ($self, $args) = @_; 
    55     my $title = $args->{title}  
    56         || "Sheet".(scalar @{$self->worksheets} + 1); 
    57     my $entry = XML::Atom::Entry->new; 
    58     $entry->title($title); 
    59     $entry->set($self->gs, 'colCount', 20); 
    60     $entry->set($self->gs, 'rowCount', 100); 
     37    my $entry = Net::Google::Spreadsheets::Worksheet->new->entry; 
    6138    my $atom = $self->service->post($self->content, $entry); 
    62     my $ws = Net::Google::Spreadsheets::Worksheet->new( 
     39    $self->sync; 
     40    return Net::Google::Spreadsheets::Worksheet->new( 
    6341        container => $self, 
    6442        atom => $atom, 
    6543    ); 
    66     push @{$self->worksheets}, $ws; 
    67     return $ws; 
    6844} 
    6945 
  • lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Worksheet.pm

    r27248 r27255  
    6464    for ( @args ) { 
    6565        my $id = sprintf("%s/R%sC%s",$self->cellsfeed, $_->{row}, $_->{col}); 
    66         my $entry = Net::Google::Spreadsheets::Cell->new( 
    67             id => $id, 
    68             editurl => $id, 
    69             row => $_->{row}, 
    70             col => $_->{col}, 
    71             input_value => $_->{input_value}, 
    72         )->entry; 
     66        $_->{id} = $id; 
     67        $_->{editurl} = $id; 
     68        my $entry = Net::Google::Spreadsheets::Cell->new($_)->entry; 
    7369        $entry->set($self->batch, operation => '', {type => 'update'}); 
    7470        $entry->set($self->batch, id => $id); 
     
    8379        ) 
    8480    } grep { 
    85         my ($node) = $_->elem->getChildrenByTagNameNS($self->batch->{uri}, 'status'); 
     81        my ($node) = $_->elem->getElementsByTagNameNS($self->batch->{uri}, 'status'); 
    8682        $node->getAttribute('code') == 200; 
    8783    } $res_feed->entries; 
     
    9086sub insert_row { 
    9187    my ($self, $args) = @_; 
    92     my $entry = XML::Atom::Entry->new; 
    93     while (my ($key, $value) = each %{$args}) { 
    94         $entry->set($self->gsx, $key, $value); 
    95     } 
     88    my $entry = Net::Google::Spreadsheets::Row->new( 
     89        content => $args, 
     90    )->entry; 
    9691    my $atom = $self->service->post($self->content, $entry); 
    9792    $self->sync; 
  • lang/perl/Net-Google-Spreadsheets/trunk/t/04_worksheet.t

    r27203 r27255  
    2525} 
    2626{ 
    27     my $ws = $ss->worksheets->[0]; 
     27    my ($ws) = $ss->worksheets; 
    2828    isa_ok $ws, 'Net::Google::Spreadsheets::Worksheet'; 
    2929} 
    3030{ 
    31     my $before = scalar @{$ss->worksheets}; 
     31    my $before = scalar $ss->worksheets; 
    3232    my $ws = $ss->add_worksheet; 
    3333    isa_ok $ws, 'Net::Google::Spreadsheets::Worksheet'; 
    34     is scalar @{$ss->worksheets}, $before + 1; 
    35     ok grep {$_ == $ws} @{$ss->worksheets}; 
     34    is scalar $ss->worksheets, $before + 1; 
     35    ok grep {$_->id eq $ws->id} $ss->worksheets; 
    3636} 
    3737{ 
    38     my $ws = $ss->worksheets->[-1]; 
     38    my $ws = ($ss->worksheets)[-1]; 
    3939    my $title = $ws->title . '+add'; 
    4040    is $ws->title($title), $title; 
     
    4343} 
    4444{ 
    45     my $ws = $ss->worksheets->[-1]; 
     45    my $ws = ($ss->worksheets)[-1]; 
    4646    my $etag_before = $ws->etag; 
    4747    my $before = $ws->col_count; 
     
    5353} 
    5454{ 
    55     my $ws = $ss->worksheets->[-1]; 
     55    my $ws = ($ss->worksheets)[-1]; 
    5656    my $ss_etag_before = $ss->etag; 
    5757    my $etag_before = $ws->etag; 
     
    6464} 
    6565{ 
    66     my $before = scalar @{$ss->worksheets}; 
    67     my $ws = $ss->worksheets->[-1]; 
     66    my $before = scalar $ss->worksheets; 
     67    my $ws = ($ss->worksheets)[-1]; 
    6868    ok $ws->delete; 
    69     is scalar @{$ss->worksheets}, $before - 1; 
    70     ok ! grep {$_ == $ws} @{$ss->worksheets}; 
     69    is scalar $ss->worksheets, $before - 1; 
     70    ok ! grep {$_ == $ws} $ss->worksheets; 
    7171} 
  • lang/perl/Net-Google-Spreadsheets/trunk/t/06_rows.t

    r27249 r27255  
    2222    my $ss = $service->spreadsheet({title => $title}); 
    2323    plan skip_all => "test spreadsheet '$title' doesn't exist." unless $ss; 
    24     plan tests => 6; 
     24    plan tests => 8; 
    2525    $ws = $ss->add_worksheet; 
    2626} 
     
    3333    ); 
    3434    is scalar $ws->rows, 0; 
    35     my $row = $ws->insert_row( 
    36         { 
    37             name => 'Nobuo Danjou', 
    38             mail => 'nobuo.danjou@gmail.com', 
    39             nick => 'lopnor', 
    40         } 
    41     ); 
     35    my $value = { 
     36        name => 'Nobuo Danjou', 
     37        mail => 'nobuo.danjou@gmail.com', 
     38        nick => 'lopnor', 
     39    }; 
     40    my $row = $ws->insert_row($value); 
    4241    isa_ok $row, 'Net::Google::Spreadsheets::Row'; 
     42    is_deeply $row->content, $value; 
     43    my $value2 = { 
     44        name => 'Kazuhiro Osawa', 
     45        nick => 'yappo', 
     46    }; 
     47    $row->content($value2); 
     48    is_deeply $row->content, $value2; 
    4349    is scalar $ws->rows, 1; 
    4450    ok $row->delete;