#!/usr/bin/perl -w
# wiki2html
# Copyright (C) 1998 Marcus Denker
# Copyright (C) 1998 ATIS Department of Computer Science,
# University of Karlsruhe / Germany
# Copyright (C) 2004 Andrew Ruthven (andrew@etc.gen.nz)
#
# Written by: Marcus Denker
# Created: Aug 1998
# Modified: 2004/03/16 - AGR - Modified to convert AtisWiki to Kwiki.
#
# This program is based about wiki2html as written by Marcus Denker.
# It has been rewritten to convert an AtisWiki database into a kwiki
# database. It retains as much information as possible (but not
# CVS or RCS history information, I couldn't be bothered with that).
#
# There are no guarantees as to what this will look like. It works
# for my pages, in a format I'm happy with. I don't think I'll need
# it again, but I'm happy to apply patches if people find things that
# need to be changed/extended.
#
# This file is not part of the AtisWiki
#
# This programm is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This programm is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public for more details.
#
# You should have received a copy of the GNU General Public License
# along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
use strict;
use vars qw($pa $LinkPattern %page);
use lib '/home/puck/lib/Wiki';
use PageArchive;
use Wiki;
use FormatWiki;
use FormatSwiki;
use FormatRawhtml;
use FormatAscii;
use FormatTransclude;
my $defaultType = "wiki";
my %page;
my $name = "PuckWiki";
my $wikipath = "/home/puck/data/wiki";
my $topath = "/home/puck/public_html/cgi-bin/kwiki";
$pa = new PageArchive($wikipath);
sub convertPage {
my $id = shift;
my $title = r_u($id);
%page = $pa->getPage($id);
return if $id eq 'RecentChanges';
# Grab the mtime before we change the id name.
my ($mtime) = (stat("$wikipath/$id.db"))[9];
# Wiki links in Kwiki must be alphanumeric strings. Replace anything
# that isn't alphanumeric with a hyphen (which does appear to be allowed).
$id =~ s/\W/-/g;
$page{text} =~ s/_(.*?)\W(.*?)_/_$1-$2_/g;
# Forced Wiki links us a different format in kwiki.
$id =~ s/^_//;
$id =~ s/_$//;
$page{text} =~ s/_(.*?)_/\[$1\]/g;
open (OUT, "> $topath/database/$id")
|| die "Failed to open $topath/database/$id for writing: $!\n";
print OUT "$page{text}\n";
close OUT;
open (OUT, "> $topath/metabase/metadata/$id")
|| die "Failed to open $topath/metabase/metadata/$id for writing: $!\n";
print OUT "edit_by: "
. ($page{logname} ne "" ? $page{logname} : "AtisWiki2kwiki")
. "\n";
print OUT "edit_time: " . gmtime($mtime) . "\n";
close OUT;
}
foreach($pa->iterator()) {
convertPage($_);
}