Changeset 27255 for lang/perl/Net-Google-Spreadsheets
- Timestamp:
- 12/23/08 03:58:10 (4 years ago)
- Location:
- lang/perl/Net-Google-Spreadsheets/trunk
- Files:
-
- 6 modified
-
lib/Net/Google/Spreadsheets/Cell.pm (modified) (1 diff)
-
lib/Net/Google/Spreadsheets/Row.pm (modified) (1 diff)
-
lib/Net/Google/Spreadsheets/Spreadsheet.pm (modified) (2 diffs)
-
lib/Net/Google/Spreadsheets/Worksheet.pm (modified) (3 diffs)
-
t/04_worksheet.t (modified) (4 diffs)
-
t/06_rows.t (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Cell.pm
r27248 r27255 22 22 after _update_atom => sub { 23 23 my ($self) = @_; 24 my ($elem) = $self->atom->elem->get ChildrenByTagNameNS($self->gs->{uri}, 'cell');24 my ($elem) = $self->atom->elem->getElementsByTagNameNS($self->gs->{uri}, 'cell'); 25 25 $self->{row} = $elem->getAttribute('row'); 26 26 $self->{col} = $elem->getAttribute('col'); -
lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Row.pm
r27248 r27255 3 3 4 4 extends 'Net::Google::Spreadsheets::Base'; 5 6 has +content => ( 7 isa => 'HashRef', 8 is => 'rw', 9 default => sub { +{} }, 10 trigger => sub {$_[0]->update}, 11 ); 12 13 after _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 20 around 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 }; 5 28 6 29 1; -
lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Spreadsheet.pm
r27168 r27255 9 9 has +title => ( 10 10 is => 'ro', 11 );12 13 has worksheets => (14 isa => 'ArrayRef[Net::Google::Spreadsheets::Worksheet]',15 is => 'rw',16 weaken => 1,17 default => sub { return [] },18 11 ); 19 12 … … 33 26 my ($self) = @_; 34 27 $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} ]);50 28 }; 51 29 30 sub worksheets { 31 my ($self, $cond) = @_; 32 return $self->list_contents('Net::Google::Spreadsheets::Worksheet', $cond); 33 } 52 34 53 35 sub add_worksheet { 54 36 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; 61 38 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( 63 41 container => $self, 64 42 atom => $atom, 65 43 ); 66 push @{$self->worksheets}, $ws;67 return $ws;68 44 } 69 45 -
lang/perl/Net-Google-Spreadsheets/trunk/lib/Net/Google/Spreadsheets/Worksheet.pm
r27248 r27255 64 64 for ( @args ) { 65 65 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; 73 69 $entry->set($self->batch, operation => '', {type => 'update'}); 74 70 $entry->set($self->batch, id => $id); … … 83 79 ) 84 80 } grep { 85 my ($node) = $_->elem->get ChildrenByTagNameNS($self->batch->{uri}, 'status');81 my ($node) = $_->elem->getElementsByTagNameNS($self->batch->{uri}, 'status'); 86 82 $node->getAttribute('code') == 200; 87 83 } $res_feed->entries; … … 90 86 sub insert_row { 91 87 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; 96 91 my $atom = $self->service->post($self->content, $entry); 97 92 $self->sync; -
lang/perl/Net-Google-Spreadsheets/trunk/t/04_worksheet.t
r27203 r27255 25 25 } 26 26 { 27 my $ws = $ss->worksheets->[0];27 my ($ws) = $ss->worksheets; 28 28 isa_ok $ws, 'Net::Google::Spreadsheets::Worksheet'; 29 29 } 30 30 { 31 my $before = scalar @{$ss->worksheets};31 my $before = scalar $ss->worksheets; 32 32 my $ws = $ss->add_worksheet; 33 33 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; 36 36 } 37 37 { 38 my $ws = $ss->worksheets->[-1];38 my $ws = ($ss->worksheets)[-1]; 39 39 my $title = $ws->title . '+add'; 40 40 is $ws->title($title), $title; … … 43 43 } 44 44 { 45 my $ws = $ss->worksheets->[-1];45 my $ws = ($ss->worksheets)[-1]; 46 46 my $etag_before = $ws->etag; 47 47 my $before = $ws->col_count; … … 53 53 } 54 54 { 55 my $ws = $ss->worksheets->[-1];55 my $ws = ($ss->worksheets)[-1]; 56 56 my $ss_etag_before = $ss->etag; 57 57 my $etag_before = $ws->etag; … … 64 64 } 65 65 { 66 my $before = scalar @{$ss->worksheets};67 my $ws = $ss->worksheets->[-1];66 my $before = scalar $ss->worksheets; 67 my $ws = ($ss->worksheets)[-1]; 68 68 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; 71 71 } -
lang/perl/Net-Google-Spreadsheets/trunk/t/06_rows.t
r27249 r27255 22 22 my $ss = $service->spreadsheet({title => $title}); 23 23 plan skip_all => "test spreadsheet '$title' doesn't exist." unless $ss; 24 plan tests => 6;24 plan tests => 8; 25 25 $ws = $ss->add_worksheet; 26 26 } … … 33 33 ); 34 34 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); 42 41 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; 43 49 is scalar $ws->rows, 1; 44 50 ok $row->delete;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)