#!/usr/bin/perl -w use strict; use Palm::Memo; if ($#ARGV >= 1) { my ($inputfile, $outputdir, @usecategories) = @ARGV; # $inputfile = '/home/danlyke/.jpilot/MemoDB.pdb'; # $outputdir = './palmwiki/'; $outputdir .= '/' unless ($outputdir =~ /\/$/); my ($pdb) = new Palm::Memo; $pdb->Load($inputfile); my (@categories, $excludecategories, $usecategories); $excludecategories = {}; @categories = @{$pdb->{appinfo}{categories}}; $usecategories = join('|', map { s/([^\w])/\\$1/g; $_; } @usecategories); if ($#usecategories >= 0) { my ($i); foreach ($i = 0; $i <= $#categories; $i++) { $excludecategories->{$i} = 1 unless ($categories[$i]->{name} =~ /^($usecategories)$/i); } } my ($record, $pages,@pages); $pages = {}; foreach $record (@{$pdb->{records}}) { if (!defined($excludecategories->{$record->{category}})) { my ($text, $pagename); $text = $record->{data}; $pagename = $1 if ($text =~ /^(.*?)($|\n)/); if ($pagename) { push @pages,$pagename; my ($filename); $filename = $pagename; $filename =~ s/[^\w]/_/g; $pages->{$pagename}->{filename} = $filename.'.html'; $pages->{$pagename}->{text} = $text; } } } my ($pagename); while (($pagename, $record) = each %$pages) { my ($text) = $record->{text}; $text =~ s/\&/\&/g; $text =~ s/\\</g; $text =~ s/\>/\>/g; $text =~ s/\"/\"/g; $text =~ s/\'/\'/g; $text =~ s/^(.*?)(\n?.*)$/\\
\/sg;
$text =~ s/\n/\
/sg;
my ($out);
$out = '';
while ($text =~ s/^(.*?)\[(.*?)\]//s)
{
my ($t, $l,$page);
$t = $1;
$l = $2;
foreach $page (@pages)
{
if ($page =~ /(^|\s)([A-Z]\w+[A-Z]\w+)($|\s)/)
{
my ($r);
$t =~ s/(^|\s)([A-Z]\w+[A-Z]\w+)($|\s)/
$1\{$2}->{filename}\"\>$2\<\/a\>$3/x,
}
}
$out .= $t;
if ($pages->{$l})
{
$out .= "{$l}->{filename}\">$l";
}
else
{
$out .= "$2";
}
}
$out .= $text;
open O, ">$outputdir/$record->{filename}"
|| die "Unable to open $outputdir/$record->{filename}\n";
print O $out;
close O;
}
}
else
{
print "Usage: palmmemowiki path/MemoDB.pdm outdirectory [memo categories]\n";
}