|
Packit |
78284e |
package main;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# Copyright (c) 2009 Openismus GmbH <http://www.openismus.com/>
|
|
Packit |
78284e |
#
|
|
Packit |
78284e |
# This file is part of mm-common.
|
|
Packit |
78284e |
#
|
|
Packit |
78284e |
# mm-common is free software: you can redistribute it and/or modify
|
|
Packit |
78284e |
# it under the terms of the GNU General Public License as published
|
|
Packit |
78284e |
# by the Free Software Foundation, either version 2 of the License,
|
|
Packit |
78284e |
# or (at your option) any later version.
|
|
Packit |
78284e |
#
|
|
Packit |
78284e |
# mm-common is distributed in the hope that it will be useful,
|
|
Packit |
78284e |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
78284e |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
78284e |
# GNU General Public License for more details.
|
|
Packit |
78284e |
#
|
|
Packit |
78284e |
# You should have received a copy of the GNU General Public License
|
|
Packit |
78284e |
# along with mm-common. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
78284e |
|
|
Packit |
78284e |
use strict;
|
|
Packit |
78284e |
use warnings;
|
|
Packit |
78284e |
use bytes;
|
|
Packit |
78284e |
use File::Glob qw(:glob);
|
|
Packit |
78284e |
use File::Spec;
|
|
Packit |
78284e |
use Getopt::Long qw(:config no_getopt_compat no_ignore_case require_order bundling);
|
|
Packit |
78284e |
|
|
Packit |
78284e |
sub path_basename ($)
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
my ($path) = @_;
|
|
Packit |
78284e |
my $basename = File::Spec->splitpath($path);
|
|
Packit |
78284e |
|
|
Packit |
78284e |
return $basename;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
|
|
Packit |
78284e |
sub exit_help ()
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
my $script_name = path_basename($0) || 'doc-postprocess.pl';
|
|
Packit |
78284e |
|
|
Packit |
78284e |
print <<"EOF";
|
|
Packit |
78284e |
Usage: perl $script_name [OPTION]... [PATTERN]...
|
|
Packit |
78284e |
|
|
Packit |
78284e |
Post-process the Doxygen-generated HTML files matching PATTERN.
|
|
Packit |
78284e |
|
|
Packit |
78284e |
Options:
|
|
Packit |
78284e |
-?, --help display this help and exit
|
|
Packit |
78284e |
EOF
|
|
Packit |
78284e |
exit;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
|
|
Packit |
78284e |
sub error (@)
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
my $script_name = path_basename($0);
|
|
Packit |
78284e |
$script_name =~ s/\.[^.]*$//s if (defined $script_name);
|
|
Packit |
78284e |
|
|
Packit |
78284e |
print STDERR ($script_name || 'doc-postprocess', ': ', @_, "\n");
|
|
Packit |
78284e |
exit 1;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
|
|
Packit |
78284e |
GetOptions('help|?' => \&exit_help)
|
|
Packit |
78284e |
or exit 2;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
foreach my $filename (map(bsd_glob($_, GLOB_NOSORT), @ARGV))
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
my @buf;
|
|
Packit |
78284e |
my $file;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
open($file, '<', $filename) and (@buf = <$file>) and close($file)
|
|
Packit |
78284e |
or error('Failed to read ', path_basename($filename), ': ', $!);
|
|
Packit |
78284e |
|
|
Packit |
78284e |
foreach (@buf)
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
if (/
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
# return value
|
|
Packit |
78284e |
s/ & */& /;
|
|
Packit |
78284e |
s/ \* */* /;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# parameters
|
|
Packit |
78284e |
s/ &/&/g;
|
|
Packit |
78284e |
s/&\b/& /g;
|
|
Packit |
78284e |
s/ \*/*/g;
|
|
Packit |
78284e |
s/\*\b/* /g;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# templates
|
|
Packit |
78284e |
s/\btemplate</template </;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
elsif (/
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
# left parenthesis
|
|
Packit |
78284e |
s/\( */(/;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# return value
|
|
Packit |
78284e |
s/ & /& /g;
|
|
Packit |
78284e |
s/ \* /* /g;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# parameters
|
|
Packit |
78284e |
s/ & */& /g;
|
|
Packit |
78284e |
s/ \* */* /g;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# templates
|
|
Packit |
78284e |
s/\btemplate</template </;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
else
|
|
Packit |
78284e |
{
|
|
Packit |
78284e |
# template decls
|
|
Packit |
78284e |
s/^(<h\d>|)template</$1template </;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# For some reason, recent versions of Doxygen output the full path to
|
|
Packit |
78284e |
# referenced tag files. This is bad since it breaks doc-install.pl,
|
|
Packit |
78284e |
# and also because it leaks local path names into source tarballs.
|
|
Packit |
78284e |
# Thus, strip the directory prefix here.
|
|
Packit |
78284e |
s| doxygen="[^":]*/([^":]+\.tag):| doxygen="$1:|g;
|
|
Packit |
78284e |
|
|
Packit |
78284e |
s/©/©/g;
|
|
Packit |
78284e |
s/—/—/g;
|
|
Packit |
78284e |
s/–/–/g;
|
|
Packit |
78284e |
s/ * */ /g;
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
|
|
Packit |
78284e |
# write the whole buffer back
|
|
Packit |
78284e |
open($file, '>', $filename) and print $file (@buf) and close($file)
|
|
Packit |
78284e |
or error('Failed to write ', path_basename($filename), ': ', $!);
|
|
Packit |
78284e |
}
|
|
Packit |
78284e |
|
|
Packit |
78284e |
exit;
|