/[Frey]/trunk/lib/Frey/ScrapBook.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/ScrapBook.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1133 - (hide annotations)
Tue Jun 30 15:10:55 2009 UTC (14 years, 10 months ago) by dpavlin
File size: 1852 byte(s)
make classes immutable and remove moose droppings to make Perl::Critic::Moose happy
1 dpavlin 994 package Frey::ScrapBook;
2     use Moose;
3    
4     extends 'Frey';
5 dpavlin 1133 with 'Frey::Web', 'Frey::File';
6 dpavlin 994
7     use XML::Simple;
8    
9     =head1 DESCRIPTION
10    
11     import data from ScrapBook Firefox plugin from L<http://amb.vis.ne.jp/mozilla/scrapbook/>
12    
13     =cut
14    
15     has scrapbook_path => (
16     is => 'rw',
17     isa => 'Str',
18     required => 1,
19     );
20    
21     sub as_sponge {
22     my ($self) = @_;
23    
24     my $xml = $self->scrapbook_path . '/scrapbook.rdf';
25     die "missing $xml" unless -e $xml;
26    
27     warn "# xml ",$self->path_size($xml);
28     my $rdf = XMLin( $xml ) || die "can't open $xml: $!";
29    
30     my @rows;
31     my @name;
32     my $name_pos;
33    
34     foreach my $item ( @{ $rdf->{'RDF:Description'} } ) {
35     warn "## item ", $self->dump( $item ) if $self->debug;
36    
37     my @row;
38    
39     foreach my $k ( keys %$item ) {
40     next if $k =~ m{^RDF:}i; # skip keys from RDF: namespace
41    
42     my $name = $k;
43     $name =~ s{^\w+:}{}g; # strip namespace:
44    
45     if ( ! defined $name_pos->{$name} ) {
46     push @name, $name;
47     $name_pos->{$name} = $#name;
48     warn "## name_pos: ", $self->dump( $name_pos ) if $self->debug;
49     }
50    
51     my $pos = $name_pos->{$name};
52     $row[$pos] = $item->{$k};
53    
54     }
55    
56     # add generated columns
57     map {
58     push @name, $_;
59     $name_pos->{$_} = $#name;
60     warn "## additional name_pos: ", $self->dump( $name_pos ) if $self->debug;
61     } grep { ! defined $name_pos->{$_} } ( 'date', 'html_path' );
62    
63     my $id = $row[ $name_pos->{id} ] || die "can't find id in ", $self->dump( $name_pos );
64     my $date = $id;
65     $date =~ s{^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$}{$1-$2-$3 $4:$5:$6};
66     push @row, $date;
67    
68     my $html_path = $self->scrapbook_path . '/data/' . $id . '/index.html';
69     push @row, $html_path;
70    
71     warn "## row ", $self->dump( @row ) if $self->debug;
72    
73     push @rows, [ @row ];
74    
75     }
76    
77     warn "## name ", $self->dump( @name ) if $self->debug;
78    
79     return {
80     rows => [ @rows ],
81     NAME => [ @name ],
82     }
83     }
84    
85 dpavlin 1133 __PACKAGE__->meta->make_immutable;
86     no Moose;
87    
88 dpavlin 994 1;

  ViewVC Help
Powered by ViewVC 1.1.26