#!/usr/local/bin/perl
#
# The XML -> HTML WebBuilder script,
# Copyright (c)1999 by Magnus Norddahl / ClanSoft.
#
use English;
use File::Basename;
if ($ARGV[0] eq "")
{
print "\nThe XML -> HTML WebBuilder script,\n";
print "Copyright (c)1999 by Magnus Norddahl / ClanSoft.\n\n";
print "Syntax: webbuilder.pl \n\n";
exit(0);
}
open (INPUT, $ARGV[1]) || die "Could not open: $ARGV[1]";
my @input = ;
my $input = join("", @input);
close (INPUT);
basename ($ARGV[1]) =~ /^(.*).xml$/;
$output = "$1.html";
open (OUTPUT, ">$output") || die "Could not open $output for writing.";
print OUTPUT convert($input);
close (OUTPUT);
sub convert
{
my ($input) = @ARG;
my $html_output;
if ($input =~ /(.*)<\/xml>/si)
{
my $xml_input = $1;
if ($input =~ /(\w].*<\/head>)/si)
{
my $xml_head = $1;
$html_output .= print_head($xml_head, $ARGV[0]);
}
else
{
die "Document has no head";
}
if ($input =~ /\w](.*)<\/body>/si)
{
my $xml_body = $1;
$html_output .= print_body($xml_body, $ARGV[0]);
}
else
{
die "Document has no head";
}
}
else
{
die "Not valid XML input";
}
return $html_output;
}
sub print_head
{
my ($xml_head, $file) = @ARG;
my $ml, $buffer;
# Don't know what this does, but Perceps does it:
if ($*) { $ml=1; }
else { $ml=0; }
# Read theme from disk and execute it:
if ( -e $file )
{
open(FILT, "<$file");
while () { $buffer.=$_; }
close(FILT);
eval($buffer);
return theme_header($xml_head);
}
else
{
die "theme '$file' not found";
}
}
sub print_body
{
my ($xml_body, $file) = @ARG;
my $ml, $buffer;
# Don't know what this does, but Perceps does it:
if ($*) { $ml=1; }
else { $ml=0; }
# Read theme from disk and execute it:
if ( -e $file )
{
open(FILT, "<$file");
while () { $buffer.=$_; }
close(FILT);
eval($buffer);
my @filters = theme_body_filters();
foreach $filter (@filters)
{
$xml_body = $filter->($xml_body);
}
$xml_body .= theme_body_end();
}
else
{
die "theme '$file' not found";
}
return $xml_body."\n";
}