/[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 1133 - (show 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 package Frey::ScrapBook;
2 use Moose;
3
4 extends 'Frey';
5 with 'Frey::Web', 'Frey::File';
6
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 __PACKAGE__->meta->make_immutable;
86 no Moose;
87
88 1;

  ViewVC Help
Powered by ViewVC 1.1.26