/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 994 - (show annotations)
Sun Jan 11 12:10:46 2009 UTC (15 years, 3 months ago) by dpavlin
File size: 1834 byte(s)
Frey::ScrapBook sponge generator
1 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