mirror of
https://github.com/python/cpython.git
synced 2024-12-11 18:53:56 +08:00
2dc07946bf
local module tables (the lists of modules documented within a chapter, inserted at the beginning of the chapter). If this is not done here, the text is not part of the resulting documents when latex2html does the processing normally. This fixes a little bit more of SF bug #451556.
96 lines
2.5 KiB
Perl
96 lines
2.5 KiB
Perl
package SynopsisTable;
|
|
|
|
sub new{
|
|
return bless {names=>'', info=>{}, file=>''};
|
|
}
|
|
|
|
sub declare{
|
|
my($self,$name,$key,$type) = @_;
|
|
if ($self->{names}) {
|
|
$self->{names} .= ",$name";
|
|
}
|
|
else {
|
|
$self->{names} .= "$name";
|
|
}
|
|
$self->{info}{$name} = "$key,$type,";
|
|
}
|
|
|
|
# The 'file' attribute is used to store the filename of the node in which
|
|
# the table will be presented; this assumes that each table will be presented
|
|
# only once, which works for the current use of this object.
|
|
|
|
sub set_file{
|
|
my($self, $filename) = @_;
|
|
$self->{file} = "$filename";
|
|
}
|
|
|
|
sub get_file{
|
|
my $self = shift;
|
|
return $self->{file};
|
|
}
|
|
|
|
sub set_synopsis{
|
|
my($self,$name,$synopsis) = @_;
|
|
my($key,$type,$unused) = split ',', $self->{info}{$name}, 3;
|
|
$self->{info}{$name} = "$key,$type,$synopsis";
|
|
}
|
|
|
|
sub get{
|
|
my($self,$name) = @_;
|
|
return split /,/, $self->{info}{$name}, 3;
|
|
}
|
|
|
|
sub show{
|
|
my $self = shift;
|
|
my $name;
|
|
print "names: ", $self->{names}, "\n\n";
|
|
foreach $name (split /,/, $self->{names}) {
|
|
my($key,$type,$synopsis) = $self->get($name);
|
|
print "$name($key) is $type: $synopsis\n";
|
|
}
|
|
}
|
|
|
|
sub tohtml{
|
|
my $self = shift;
|
|
my $oddrow = 1;
|
|
my $data = "<table class='synopsistable' valign='baseline'>\n";
|
|
my $name;
|
|
foreach $name (split /,/, $self->{names}) {
|
|
my($key,$type,$synopsis) = $self->get($name);
|
|
my $link = "<a href='module-$key.html'>";
|
|
$synopsis =~ s/<tex2html_percent_mark>/%/g;
|
|
$synopsis =~ s/<tex2html_ampersand_mark>/\&/g;
|
|
$data .= (' <tr'
|
|
. ($oddrow ? " class='oddrow'>\n " : '>')
|
|
. "<td><b><tt class='module'>$link$name</a></tt></b></td>\n"
|
|
. " <td>\ </td>\n"
|
|
. " <td class='synopsis'>$synopsis</td></tr>\n");
|
|
$oddrow = !$oddrow;
|
|
}
|
|
$data .= "</table>\n";
|
|
$data;
|
|
}
|
|
|
|
|
|
package testSynopsisTable;
|
|
|
|
sub test{
|
|
# this little test is mostly to debug the stuff above, since this is
|
|
# my first Perl "object".
|
|
my $st = SynopsisTable->new();
|
|
$st->declare("sample", "sample", "standard");
|
|
$st->set_synopsis("sample", "This is a little synopsis....");
|
|
$st->declare("copy_reg", "copyreg", "standard");
|
|
$st->set_synopsis("copy_reg", "pickle support stuff");
|
|
$st->show();
|
|
|
|
print "\n\n";
|
|
|
|
my $st2 = SynopsisTable->new();
|
|
$st2->declare("st2module", "st2module", "built-in");
|
|
$st2->set_synopsis("st2module", "silly little synopsis");
|
|
$st2->show();
|
|
}
|
|
|
|
1; # This must be the last line -- Perl is bogus!
|