#!/usr/bin/perl
die "Usage: $0 \n"
unless scalar @ARGV == 3;
my ($text, $html, $texi) = @ARGV;
open TEXT, "<$text" or die "Cannot open text file \"$text\"\n";
open HTML, ">$html" or die "Cannot create html file \"$html\"\n";
open TEXI, ">$texi" or die "Cannot create TexInfo file \"$texi\"\n";
print HTML "";
sub analyze($) {
my ($line) = @_;
my ($htmlLine, $texiLine) = ($line, $line);
# command line options
$texiLine =~ s/ (--?[a-z-]*)/ \@option{$1}/g;
$htmlLine =~ s/ (--?[a-z-]*)/ $1<\/tt>/g;
# [Class::]function()
$texiLine =~ s/([^A-Za-z])(([A-Z][A-Za-z0-9]*::)?[A-Za-z0-9]+\(\))/$1\@code{$2}/g;
$htmlLine =~ s/([^A-Za-z])(([A-Z][A-Za-z0-9]*::)?[A-Za-z0-9]+\(\))/$1$2<\/code>/g;
# `file'
$texiLine =~ s/`([A-Za-z.\/]*)'/\@file{$1}/g;
$htmlLine =~ s/`([A-Za-z.\/]*)'/`$1'<\/tt>/g;
# TS...
$texiLine =~ s/(^|[^A-Z])(TS[A-Za-z_*()]*)/$1\@code{$2}/g;
$htmlLine =~ s/(^|[^A-Z])(TS[A-Za-z_*()]*)/$1$2<\/code>/g;
# CXXTEST_
$texiLine =~ s/(CXXTEST_[A-Z_]*)/\@code{$1}/g;
$htmlLine =~ s/(CXXTEST_[A-Z_]*)/$1<\/tt>/g;
return ($htmlLine, $texiLine);
}
my $line;
my $inRelease = 0;
while ( defined( $line = ) ) {
chomp $line;
if ( $line =~ m/^CxxTest Releases/ ) {
print HTML "CxxTest Releases\n";
print HTML "CxxTest Releases
\n\n";
print TEXI "\@appendix Version history\n";
print TEXI "\@itemize \@bullet\n";
}
elsif ( $line =~ m/^(.*):$/ ) {
if ( $inRelease ) {
print HTML "\n\n";
print TEXI "\@end itemize\n";
}
print HTML "$1
\n";
print HTML "\n";
print TEXI "\@item\n\@strong{$1}\n";
print TEXI "\@itemize \@minus\n";
$inRelease = 1;
}
elsif ( $line =~ m/^ - (.*)$/ ) {
my ($htmlLine, $texiLine) = analyze($1);
print HTML "- $htmlLine
\n";
print TEXI "\@item\n$texiLine\n";
}
}
if ( $inRelease ) {
print HTML "
\n\n";
print TEXI "\@end itemize\n\n";
}
print HTML "\n";
print TEXI "\@end itemize\n";
close TEXT or die "Error closing text file \"$text\"\n";
close HTML or die "Error closing html file \"$html\"\n";
close TEXI or die "Error closing TexInfo file \"$texi\"\n";