Term::GnuplotTerminals - documentation of gnuplot output devices
gnuplot
EOP
for my $file (sort <gnuterm/term/*.trm>) { open F, $file or die "Cannot open '$file': $!"; my $name; while (<F>) { $name = $1, last if /^\s*START_HELP\s*\(\s*(.*?)\s*\)/; } my $got = ""; my $finished = 0; while (<F>) { # last if /^\s*(END_HELP\s*\(|\#\s*endif)/; # Malformed: mac $finished = 1, last if /^\s*(END_HELP\s*\()/; # Malformed: mac $got .= $_; # print "$file: $_" } close F or die "Cannot close '$file': $!";
$got or warn("No docs found in '$file'\n"); $got or next; $finished or warn("No end of docs found in '$file'\n"); $got .= ","; # Some chunks may be surrounded by #ifdefs. Keep them... $got =~ s/^(\s*#\s*(if\w*|else|elif|endif)\b.*)/"",\n" $1",\n"",/gm; # Sometimes there is a leading , $got =~ s/^\s*,\s*//gm; my $help = ""; $help .= "$1\n" while $got =~ s!\A\s*(?:/\*.*?\*/\s*)*\"(((?>[^\"\\]+)|\\[\\\"])*)\"\s*(,\s*|$)!!sm; $got and warn("Malformed docs in '$file':\n$got\n"); $help =~ s/\\([\\\"])/$1/g; $help =~ s/^\t/ /mg; # Do not like leading TABs # Interchange #if and the section $help =~ s/(?:\A|\n)\n[ \t]+#\s*(if.*)\n{2,}(\d+[ \t]+.*\n)/\n\n$2\n\n #$1\n\n/mg; # First line = level name, then lines starting with '?', then text my @help = split /^(?>(\d+)(?>\s+)(.+))\n(\n\s+#\s*if.*\n+)*(?:\?(?>.*)\n)+/m, $help; $help[0] eq '' or warn "Malformed leader of help in '$file': '$help[0]'\n"; shift @help; while (@help) { my ($level, $name, $ifdef, $text) = (shift @help, shift @help, shift @help, shift @help); $ifdef = '' unless defined $ifdef; $text = "$ifdef$text"; # Process tables: $text =~ s/ ^\@start\s+table\b(?>.*)\n # First line ((?>((\ (?>.*)|)\n)*)) # Interactive form [\s\S]*? # Skip to the ... ^\@end\s+table\b.* # Last line /add_indent($1)/mgxe; # Remove extra indentations $text =~ s/^ //mg; # Remove empty #if's $text =~ s/(\A|\n)\n[ \t]+#\s*(if.*)\n{2,}( +#[ \t]*endif\b.*\n)/\n\n/mg; # Add an extra newline on boundary of indented/non-indented text $text =~ s/^(\S(?>.*)\n) /$1\n /mg; $text =~ s/^( (?>.+)\n)(\S)/$1\n$2/mg; # Actual pages have a lot of `foo: <bar>`, we do not translate them correct # Need to handle `foo` `bar\nbaz` `bar` correctly, thus anchor at paragraph 1 while $text =~ s/ ^(?<![^\n]\n)(?=\S) # Start of text paragraph ((?:.|\n(?!\n))*?) # Some part of text paragraph `([\s\S]*?)` # Possibly multiline /${1}C<$2>/mgx; print <<EOP; =head$level $name
$text
EOP } }
print <<EOP; =head1 AUTHOR
Autogenerated from *.trm files in gnuplot terminals subdirectory by
$0 > GnuplotTerminals.pod
Term::Gnuplot.
To install Term::Gnuplot, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Term::Gnuplot
CPAN shell
perl -MCPAN -e shell install Term::Gnuplot
For more information on module installation, please visit the detailed CPAN module installation guide.