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

  ViewVC Help
Powered by ViewVC 1.1.26